如何为自定义帖子类型添加标签?


28

我有一个名为的自定义帖子类型portfolio,我正在尝试为其添加标签分类法,该怎么做?


@chifliiiii如果我这样做,则类别和标签与用于帖子的相同。如何获得新帖子类型专有的类别和标签?
Troy Templeman 2014年

@chifliiiii如在模板中显示标签?
最多

Answers:


15

像这样:(在上面写着“投资组合”的地方,您可以将分类法注册为帖子类型

add_action( 'init', 'create_tag_taxonomies', 0 );

//create two taxonomies, genres and tags for the post type "tag"
function create_tag_taxonomies() 
{
  // Add new taxonomy, NOT hierarchical (like tags)
  $labels = array(
    'name' => _x( 'Tags', 'taxonomy general name' ),
    'singular_name' => _x( 'Tag', 'taxonomy singular name' ),
    'search_items' =>  __( 'Search Tags' ),
    'popular_items' => __( 'Popular Tags' ),
    'all_items' => __( 'All Tags' ),
    'parent_item' => null,
    'parent_item_colon' => null,
    'edit_item' => __( 'Edit Tag' ), 
    'update_item' => __( 'Update Tag' ),
    'add_new_item' => __( 'Add New Tag' ),
    'new_item_name' => __( 'New Tag Name' ),
    'separate_items_with_commas' => __( 'Separate tags with commas' ),
    'add_or_remove_items' => __( 'Add or remove tags' ),
    'choose_from_most_used' => __( 'Choose from the most used tags' ),
    'menu_name' => __( 'Tags' ),
  ); 

  register_taxonomy('tag','portfolio',array(
    'hierarchical' => false,
    'labels' => $labels,
    'show_ui' => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var' => true,
    'rewrite' => array( 'slug' => 'tag' ),
  ));
}
?>

@JoeBobby,可能值得检查WordPress Codex页面以注册分类法,以便对所有可用选项有更好的了解:codex.wordpress.org/Function_Reference/register_taxonomy
Stephen S.

8
请注意,这将创建一个全新的分类法,称为“标签”,而不是将现有的“ post_tag”分类法添加到自定义帖子类型中。
杰克

@chifliiiii如何在带有标签链接的单个页面中获取这些标签,如何为标签页面创建模板
Dinesh

1
我同意杰克的观点,我觉得这不能解决问题。@Marcus的答案应该是标记为已接受的答案。
克雷格·韦恩

58

或只需添加:

'taxonomies' => array('post_tag')

此帖子类型将使用一组已注册的分类法,例如categorypost_tag。这可以代替register_taxonomy_for_object_type()直接调用。自定义分类法仍需要向进行注册register_taxonomy()

到-file中的$args数组functions.php,您可以在其中创建自定义帖子类型register_post_type()


2
请在回答中添加一个解释:为什么可以解决问题?
fuxia


1

方法1(来自以上答案:https : //wordpress.stackexchange.com/a/106211/38771

不同的帖子类型将使用与默认“帖子”类型相同的“标签”数据。

  • 好处

    • 一切(应该)只用一行就可以使用

    • 您所有的标签都在CMS中的一处

  • 缺点

    • 忘记结构合理/易于使用的CMS-自定义帖子类型页面上的标签列表将显示计数错误的所有标签(而不仅仅是自定义帖子类型文章中使用的标签)...
    • 更改标签会影响默认的“帖子”文章以及自定义帖子类型的文章(删除标签会在两种文章中将其删除)
    • 很难(可能是不可能)设置任何独特的标记功能:不同的描述,自定义字段,图像等(至少在核心Wordpress代码之上没有很多自定义代码)...

方法2(从上面的答案:https : //wordpress.stackexchange.com/a/62263/38771

不同的帖子类型使用不同的“标签”配置/数据。

  • 好处

    • 创建不同/明显不同的标签相关功能:前端模板,功能,查询过滤器,操作)
    • 分配与标签相关的其他数据:字段数据,甚至是自定义字段
    • 在CMS中更好地管理标签
      • 示例:编辑/删除“ post”标签不会影响其他帖子类型的(类似命名/缓慢)标签
  • 交易

    设置更多代码

实际上,它们是一种以各种方式对各种项目进行分组的极其有效的方法。https://codex.wordpress.org/Taxonomies#Custom_Taxonomies


这是方法1的一个案例:一个大型体育网站,涵盖了带有“ NBA”,“ NHL”,“篮球”,“奥运会”,“ Steroids”,“ College”等标签的众多主题/联赛/体育,但它没有复制和管理什么可能是+100标签和4种帖子类型(默认帖子类型和3种自定义帖子类型)是没有任何意义的。至于缺点,如果标签计数数据是如此特殊,则可以为此创建自定义视图。至于每种帖子类型的类似自定义标签,到目前为止似乎还没有任何明显的需求(努力考虑一个……需要示例)。
MarsAndBack

是的,但是对于不同的帖子类型,不会自动存在不同的标签永久链接。对于所有帖子类型,标签“季后赛”将具有“ / tag /季后赛”。然后,您必须设置重写规则或使用GET参数来创建不同的永久链接...对于每种帖子类型,使用不同的分类法,每种帖子类型的每个“季后赛”标签都将具有自己的永久链接,可以使用Wordpress的模板进行自定义层次结构。如果NBA,NHL的不同“季后赛”页面不同,那很好。...我在一个网站上对分类法进行了一定程度的定制(定制字段,分类图像,描述)
PS

1
我明白你在说什么 因此,如果每个CPT使用不同的标签分类法,那么如何在添加/编辑一个税项中的术语时将其更改为其他税项(即跨税项同步的唯一术语)中的更改。例如,一次定义“篮球”,比方说在邮政标签税中,然后单击保存,然后在其他税种中为CPT唯一创建“篮球”。因此,一次输入/编辑标签,更改就会在多个标签税中反映出来。最终,您可以在一个目标中进行标签管理,以及更理想的永久链接情况。
MarsAndBack

是的,如果站点为多个CPT共享相同的基本分类法信息(标题),并为不同的CPT进一步定制这些分类法(自定义字段,图像等),则该方法实际上是一种不错的方法。真好!
PS

0

只需使用此代码可能会帮助您

 add_action( 'init', 'create_client_tax' );
function create_client_tax() {
    register_taxonomy( 
            'client_tag', //your tags taxonomy
            'client',  // Your post type
            array( 
                'hierarchical'  => false, 
                'label'         => __( 'Tags', CURRENT_THEME ), 
                'singular_name' => __( 'Tag', CURRENT_THEME ), 
                'rewrite'       => true, 
                'query_var'     => true 
            )  
        );
}

已接受答案的已剥离版本。同样,这也增加了一个全新的分类法,而不是使用现有的“ post_tag”分类法。
acidrums18年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.