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

评论

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

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

#1 楼

像这样:(在上面写着“ portfolio”的地方就是您将分类法注册到帖子类型的地方

评论


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

– Stephen S.
14年5月8日在16:41

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

–杰克
17年6月28日在17:53

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

–Dinesh
18年6月25日在9:05

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

–克雷格·韦恩(Craig Wayne)
18年7月12日在21:20

#2 楼

或仅添加:

'taxonomies' => array('post_tag')



已注册分类法数组,例如categorypost_tag,将与该帖子类型一起使用。可用于代替直接调用register_taxonomy_for_object_type()。自定义分类法仍然需要在register_taxonomy()中进行注册。


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

评论


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

– fuxia♦
13年7月12日在3:54

#3 楼

使用此:

add_action( 'init', 'gp_register_taxonomy_for_object_type' );
function gp_register_taxonomy_for_object_type() {
    register_taxonomy_for_object_type( 'post_tag', 'portfolio' );
};


#4 楼

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

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



优点


一切(应)开箱即用,只需一行即可
将所有标签合而为一放置在CMS中



缺点


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



方法2(来自以上答案:https://wordpress.stac kexchange.com/a/62263/38771)

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



优点



创建不同/明显不同的标记相关功能:前端模板,功能,查询过滤器,操作)

分配不同的标记相关数据:字段数据或甚至自定义字段

在CMS中更好地管理标签



示例:编辑/删除“ post”标签不会影响(类似命名/ slugged)标记以用于其他帖子类型/>


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


评论


方法1的情况如下:一个大型体育网站,其中包含带有标签的大量主题/联赛/运动,例如“ NBA”,“ NHL”,“篮球”,“奥运会”,“ Steroids”,“ College”等,重复和管理可能是+100标记和4种帖子类型(默认设置)没有任何意义帖子类型和3种自定义帖子类型)。至于缺点,如果标签计数数据是如此特殊,则可以为此创建自定义视图。至于每种帖子类型的类似自定义标签,到目前为止似乎还没有任何明显的需求(努力考虑一个……需要的例子)。

– MarsAndBack
19年1月12日,0:23

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

–P-S
19年1月14日在13:53

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

– MarsAndBack
19年1月15日,1:15

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

–P-S
19年1月18日在11:44

#5 楼

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

 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”分类法。

–acidrums4
18年7月11日在17:36

#6 楼

这总是可以正常工作。

#7 楼

尽管Marcus的答案解决了大多数问题,但请注意,这并不是一个完整的解决方案。 chifliiiii的答案较为完整,但如评论中所述,它并未重用已存在的标签分类法。因此,这就是为什么我认为chifliiiii的答案不正确。我将在下面解释原因。
完整的解决方案
通过使用Marcus或Giovanni建议的方法将自定义帖子类型注册到post_tag分类法中,将不会显示自定义标签的帖子标签存档页面上的帖子类型。它仅显示post帖子类型的帖子,因为内置标签模板是通过查询呈现的,而该查询仅针对post帖子类型。要解决此问题,您需要使用pre_get_posts钩子更改查询。
这是解决此问题的一种通用方法(不要问我为什么在内核中未实现): />