多个自定义帖子类型可以共享一个自定义分类法吗?


23

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

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

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

谢谢-乍得

Answers:


15

在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彼此注册即可。否则,在查询挂钩期间您将无法访问该互连。


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

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

4

从食典:

分类法

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

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

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


4

通过传递要共享分类法的所有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
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.