Wordpress自定义帖子,如何在列表中显示自定义字段


Wordpress custom post, how to display custom fields on listing

请帮我…我是wordpress的新手,我用字段(位置、着装)的custom_meta_box创建了一个自定义帖子

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

这是我当前的代码:

/*插件名称:我自己的自定义帖子插件URI:http://www.mywebsite.com/firstPlugin/描述:我的示例描述作者:Monski版本:1.0作者URI:http://www.mywebsite.com/*///注册新的帖子类型和分类函数wpt_event_posttype(){register_post_type('events',阵列('labels'=>数组('name'=>__('Events'),'singular_name'=>__('Event'),"add_new"=>__("添加新事件"),'add_new_item'=>__('添加新事件'),'edit_item'=>__('编辑事件'),'new_item'=>__('添加新事件'),'view_item'=>__('查看事件'),'search_items'=>__('搜索事件'),'not_found'=>__('未找到事件'),'not_found_in_trash'=>__('在垃圾桶中找不到事件')),'public'=>true,"supports"=>数组("title"、"editor"、"thumbia"、"comments"),'capability_type'=>'post','rewrite'=>数组("slug"=>"events"),//Permalinks格式'menu_position'=>5,'register_meta_box_cb'=>'add_events_metaboxes'));}add_action('init','wpt_event_posttype');函数add_events_metaboxes(){//add_meta_box('pt_events_date','Event date','wpt_events_date'、'events'、'side'、'default');add_meta_box('pt_events_location','Event location','wpt_events_location'、'events'、'normal'、'high');}add_action('add_meta_boxes','add_events_metaboxes');函数wpt_events_location(){全球$post;//验证数据来源所需的非cenameecho";//获取位置数据(如果已输入)$location=get_post_meta($post->ID,'_location',true);$dresscode=get_post_meta($post->ID,'_dresscode',true);//回声出字段echo'

输入位置:

';echo";echo'

人们应该如何着装?

';echo";}函数wpt_save_events_meta($post_id,$post){//验证这来自我们的屏幕,并获得适当的授权,//因为save_post可以在其他时间触发if(!wp_verify_nonce($_POST['eventmeta_noncename'],plugin_basename(__FILE__)){return$post->ID;}//是否允许用户编辑帖子或页面?if(!current_user_can('edit_post',$post->ID))return$post->ID;//好的,我们通过了身份验证:我们需要找到并保存数据//我们将把它放入一个数组中,使其更容易循环。$events_meta['_location']=$_POST['_location'];$events_meta['_dresscode']=$_POST['_dpresscode'];//将$events_meta的值添加为自定义字段foreach($events_meta as$key=>$value){//循环遍历$events_metaarray!if($post->post_type=='revision')return;//不存储自定义数据两次$value=内爆(',',(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);//保存自定义字段

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

希望这篇文章也能帮助我们了解整个过程。

用该代码更新您的代码,它对我很有效。我更喜欢使用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];

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

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