我正在考虑在wordpress中重建一个drupal站点,但仍在围绕系统之间的差异(尤其是cck /字段和自定义内容类型以及使用分类法的不同方式)保持一致。

我想了解两种自定义内容类型是否可以共享一种自定义分类法。在drupal中,我可以将特定内容类型的发布限制为一组用户,然后该发布可以具有仅与一个或多个其他内容类型(但并非所有类型)共享的分类法。

不使用角色范围器可以显示用户方面的内容,您可以使用wordpress吗?我只见过具有自定义分类法的自定义内容类型,但是无法在两个或多个自定义内容类型之间共享给定分类法,而无需在两个地方重新创建它或通过类别/标签在全局范围内启用它...

感谢,
-乍得。

#1 楼

在CPT之间共享分类法


我想知道两种自定义内容类型是否可以共享一种自定义分类法。


简单地说:是的,他们可以。

如何共享

您应该始终注册自定义分类法,并尽早相互发布类型。

结束注册在函数中进行处理,并以默认优先级连接到init钩子。

register_taxonomy(
    'some_custom_tax',
    'some_post_type',
    $array_of_arguments
);
register_post_type(
    'some_post_type',
    [
        'taxonomies' => [ 'some_custom_tax' ],
        // other arguments
    ]
);


无论对register_taxonomy()使用第二个参数还是对register_taxonomy_for_object_type()使用都无关紧要,因为两者都相同:它们采用$GLOBALS['wp_taxonomies']数组并为其分配post类型对象(类型)。

重要说明

请确保您注册了CT和注册时彼此之间的CPT。否则在查询挂钩期间您将无法访问该互连。

评论


我发现的一个问题是,一旦在其他地方使用了共享CT,管理员将无法正确显示CPT的帖子数。

– Meetai.com
2014年3月6日在7:23

我不确定是否要遵循。该问题询问有关将CT注册到多个CPT的问题。这个答案似乎描绘了两种方式将CPT和CT相互注册。

–巴西那个家伙
19年1月16日在3:03

@ThatBrazilianGuy是的,答案是。由于多种原因。请详细阅读答案。

– kaiser
20-4-20在22:04

#2 楼

通过传递要共享分类法的所有Custom帖子类型的数组,我能够轻松实现此目标,因此我的代码如下所示:

add_action( 'init', 'build_taxonomies', 0 );
 function build_taxonomies() {
    register_taxonomy( 'some_custom_tax', array('some_post_type_1','some_post_type_2'), array( 'hierarchical' => true, 'label' => 'Custom Tax Title', 'query_var' => true, 'rewrite' => true ) );   
}


评论


这应该是IMO接受的答案。简明扼要。

– FaCE
19年6月21日在11:33

#3 楼

来自法典:


分类法

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


注册帖子类型时,请分配其支持的分类法,或者在其他时候使用register_taxonomy_for_object_type()将分类法添加到帖子类型中。

您可以根据需要将分类法分配给尽可能多的帖子类型。分类法与特定职位类型无关。