具有多个对象类型和UPDATE_COUNT_CALLBACK的注册分类

时间:2015-01-15 作者:Yoga

这个register_taxonomy 接受数组作为对象类型,这样我就可以将尽可能多的自定义帖子类型链接到自定义分类法。那很好。

问题是,默认分类计数在默认设置下始终为零,那么我应该为参数设置什么呢update_count_callback?

我一直在思考这个问题,因为分类法与多个帖子类型相关联,所以当我查看特定的帖子类型时,计数是有意义的。

那么,如果自定义分类法链接到多个自定义帖子类型,那么处理自定义分类法计数的最佳方法是什么?

1 个回复
SO网友:Privateer

我有时会遇到类似的事情。在使用自定义帖子类型和分类法时,我最终做了以下工作:

在init(10之前)上设置回调以注册分类法这样做几乎总能消除我在自定义对象中遇到的奇怪问题,wordpress中关于register\\u*函数的文档指出,您肯定应该在初始化期间注册它们。

如果您不手动链接它们,您可能会或可能不会在它们之间进行适当的来回对话。。。update\\u callback\\u计数是来回对话的一部分,因此我在10之前的init期间注册所有对象,然后在10之后(或10之后)将它们关联起来。

add_action(\'init\', do_create_taxonomies, 7);
function do_create_taxonomies() {
   # setup taxonomies as array of key => options arrays
   foreach ( $taxonomies as $slug => $options ) {
      register_taxonomy("{$slug}", null, "{$options}");
   }
}

add_action(\'init\', do_create_post_types, 8);
function do_create_post_types() {
   # setup post types as array of key => options arrays
   foreach ( $post_types as $slug => $options ) {
      register_post_type("{$slug}", "{$options}");
   }
}

add_action(\'init\', do_bind_post_types_to_taxonomies, 11);
function do_bind_post_types_to_taxonomies() {
   # setup relationships as Tax_slug => array( post_type_slugs )
   foreach ( $relationships as $tax_slug => $post_types ) {
      if ( is_array($post_types) ) {
         foreach ( $post_types as $post_type_slug ) {
            register_taxonomy_for_object_type( "{$tax_slug}", "{$post_type_slug}" );
         }
      } else {
         register_taxonomy_for_object_type("{$tax_slug}", "{$post_types}");
      }
   }
}
这为我解决了与自定义帖子类型和分类法相关的各种奇怪问题。如果这不起作用,那么可能值得深入了解源代码,以了解\\u update\\u post\\u term\\u count是如何工作的。。。然后查看您的关系,看看它是否在强制执行\\u update\\u generic\\u term\\u count。

结束

相关推荐

必须使用插件自动加载器:如何正确使用get_plugins()?

我的autoloader类负责加载必须使用的插件,这些插件不位于mu-plugins 文件夹要定位它们,我需要使用get_plugins() 作用According to Codex, 该函数接受一个参数:$plugin\\u folder(string)(可选):单个插件文件夹的相对路径。我的文件层次结构如下所示:|-- /mu-plugins | |-- autoload.php // only includes wpmu/autoload.php&#