我已经在仪表板中创建了几个自定义帖子类型,我想用自定义帖子类型的名称自动填充类别名称,以便用户在添加新帖子时不必记住勾选正确的框。
例如,下面是自定义帖子类型和它们对应的类别名称:
新闻(类别"新闻"的id为5)
事件(类别"事件"的id为12)
报告(类别"报告"的id为8)
视频(类别"视频"id为9)
这工作。它会自动选中"新闻"分类框wp_set_post_categories( $post_ID, array(5));
我只需要一种方法来确定添加新帖子时我所处的自定义帖子类型。像这样的东西应该可以工作,但它没有。
function set_my_categories($post_type){
$post_type = get_post_type_object( 'post_type' );
$post_name = $post_type ->labels->singular_name;
switch( $post_name )
{
case 'News':
wp_set_post_categories( $post_ID, array(5));
break;
case 'Events':
wp_set_post_categories( $post_ID, array(12));
break;
case 'Reports':
wp_set_post_categories( $post_ID, array(8));
break;
case 'Videos':
wp_set_post_categories( $post_ID, array(9));
break;
}
}
add_action('save_post', 'set_my_categories');
谢谢查尔斯。
在钩子save_post上调用函数,但不向其传递任何变量。你的函数需要有一个$post_type。
你应该看看do_action()从wordpress codex:)它可以传递参数到函数:)
下面是答案,以防其他人需要这样做:
function set_my_categories($post_id){
$post_type = get_post_type($post_id);
switch( $post_type ){
case 'News':
wp_set_post_categories( $post_id, array(5));
break;
case 'Events':
wp_set_post_categories( $post_id, array(12));
break;
case 'Reports':
wp_set_post_categories( $post_id, array(8));
break;
case 'Videos':
wp_set_post_categories( $post_id, array(9));
break;
}
}
add_action('save_post', 'set_my_categories');