WordPress 3.9 -需要一个功能来获得自定义的帖子类型名称自动填充在仪表板类别



我已经在仪表板中创建了几个自定义帖子类型,我想用自定义帖子类型的名称自动填充类别名称,以便用户在添加新帖子时不必记住勾选正确的框。

例如,下面是自定义帖子类型和它们对应的类别名称:
新闻(类别"新闻"的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');

最新更新