【问题标题】:Wordpress custom post, how to display custom fields on listingWordpress 自定义帖子,如何在列表中显示自定义字段
【发布时间】:2012-08-28 03:24:51
【问题描述】:

请帮助我.. 我是 wordpress 新手,我正在使用字段(位置、服装)的 custom_meta_box 创建自定义帖子

所以在我的自定义帖子列表中,我想查看我在 custom_meta_box 上创建的值。

这是我当前的代码:

/* 插件名称:我自己的自定义帖子 插件 URI:http://www.mywebsite.com/firstPlugin/ 描述:我的样本描述 作者:蒙斯基 版本:1.0 作者 URI:http://www.mywebsite.com/ */ // 注册新的帖子类型和分类 函数 wpt_event_posttype() { register_post_type('事件', 大批( '标签' => 数组( '名称' => __( '事件' ), 'singular_name' => __( '事件' ), 'add_new' => __('添加新事件'), 'add_new_item' => __('添加新事件'), 'edit_item' => __( '编辑事件' ), 'new_item' => __( '添加新事件' ), 'view_item' => __('查看事件'), 'search_items' => __( '搜索事件' ), 'not_found' => __('未找到事件'), 'not_found_in_trash' => __( '没有在垃圾箱中找到事件' ) ), '公共' => 真的, 'supports' => array('title', 'editor', 'thumbnail', 'cmets'), 'capability_type' => '发布', 'rewrite' => array("slug" => "events"), // 永久链接格式 'menu_position' => 5, 'register_meta_box_cb' => 'add_events_metaboxes' ) ); } add_action('init', 'wpt_event_posttype'); 函数 add_events_metaboxes() { // add_meta_box('wpt_events_date', '事件日期', 'wpt_events_date', 'events', 'side', 'default'); add_meta_box('wpt_events_location', '事件位置', 'wpt_events_location', '事件', '正常', '高'); } add_action('add_meta_boxes', 'add_events_metaboxes'); 函数 wpt_events_location() { 全球 $post; // Noncename 需要验证数据的来源 回声''; // 如果已经输入,则获取位置数据 $location = get_post_meta($post->ID, '_location', true); $dresscode = get_post_meta($post->ID, '_dresscode', true); // 回显字段 echo '

输入位置:

'; 回声''; echo '

人们应该如何着装?

'; 回声''; } 函数 wpt_save_events_meta($post_id, $post) { // 验证这来自我们的屏幕并具有适当的授权, // 因为save_post可以在其​​他时间触发 if ( !wp_verify_nonce( $_POST['eventmeta_noncename'], plugin_basename(__FILE__) )) { 返回 $post->ID; } // 是否允许用户编辑帖子或页面? if ( !current_user_can( 'edit_post', $post->ID )) 返回 $post->ID; // OK,我们通过了身份验证:我们需要找到并保存数据 // 我们将它放入一个数组中以使其更容易循环。 $events_meta['_location'] = $_POST['_location']; $events_meta['_dresscode'] = $_POST['_dresscode']; // 添加 $events_meta 的值作为自定义字段 foreach ($events_meta as $key => $value) { // 循环遍历 $events_meta 数组! if( $post->post_type == 'revision' ) 返回; // 不要两次存储自定义数据 $value = implode(',', (array)$value); // 如果 $value 是一个数组,则将其设为 CSV(不太可能) if(get_post_meta($post->ID, $key, FALSE)) { // 如果自定义字段已经有值 update_post_meta($post->ID, $key, $value); } else { // 如果自定义字段没有值 add_post_meta($post->ID, $key, $value); } if(!$value) delete_post_meta($post->ID, $key); // 如果为空则删除 } } add_action('save_post', 'wpt_save_events_meta', 1, 2); // 保存自定义字段

【问题讨论】:

    标签: php wordpress custom-post-type


    【解决方案1】:

    使用该代码更新您的代码,它对我有用。我更喜欢使用 ACF(高级自定义字段),但最好学习如何元框。使用繁重的代码,更好地了解您的知识

    add_action('init','wpt_event_posttype');
    add_action('save_post','save_event_data');
    
    
    function add_events_metaboxes(){
        add_meta_box('events',esc_html__('Info'), 'events_callback', 'events', 'normal', 'default', null);
    }
    
    
    //Events Callback function Meta_Box
    function events_callback($post){
        wp_nonce_field('save_event_data','event_nonce');
    
        $location = get_post_meta($post->ID,'_event_location_key',true);
        echo '<label for="event_location_field" style="display:block">Location</label></br>';
        echo '<input type="text" id="event_location_field" name="event_location_field" style="width:400px" value="'. esc_attr__($location).'"/></br>';
    
        $dresscode = get_post_meta($post->ID,'_event_dresscode_key',true);
        echo '<label for="event_dresscode_field" style="display:block">Dresscode</label></br>';
        echo '<input type="text" id="event_dresscode_field" name="event_dresscode_field" style="width:400px" value=" '. esc_attr__($dresscode). '" /></br>';
    
    }
    function save_event_data($post_id){
        if (!isset($_POST['event_nonce'])
            || ! wp_verify_nonce($_POST['event_nonce'],'save_event_data')
            || ! isset($_POST['event_location_field'])
            || ! isset($_POST['event_dresscode_field'])){
            return;
        }
        $event_location = sanitize_text_field($_POST['event_location_field']);
        update_post_meta($post_id,'_event_location_key',$event_location);
    
        $event_dresscode = sanitize_text_field($_POST['event_dresscode_field']);
        update_post_meta($post_id,'_event_dresscode_key',$event_dresscode);
    }
    
    

    并为您的 html 使用此代码

    <?php 
         $location = get_post_meta(get_the_ID(),'_event_location_key') ; 
         $dresscode = get_post_meta(get_the_ID(),'_event_dresscode_key');
    ?>
    
    echo $location[0];
    echo $dresscode[0];
    
    

    【讨论】:

      【解决方案2】:

      我建议你使用下面的插件。使用 ACF,您可以为您的自定义帖子类型创建自定义字段。

      https://wordpress.org/plugins/advanced-custom-fields/

      【讨论】:

        【解决方案3】:

        您想使用get_post_meta 函数。这将提供值并允许您在页面/帖子模板中显示它。

        希望this article 也能帮助您了解整个过程。

        【讨论】:

          猜你喜欢
          • 2014-07-31
          • 1970-01-01
          • 2019-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-26
          • 1970-01-01
          相关资源
          最近更新 更多