主题分类的对象类型的WordPress插件注册分类

主题分类的对象类型的WordPress插件注册分类,wordpress,wordpress-theming,action-hook,Wordpress,Wordpress Theming,Action Hook,在我的WordPress插件中,我使用以下代码为所有已安装的Taxonimies自动添加元框: add_action( 'init', 'my_plugin_register_taxonomies_for_object_type'); function my_plugin_register_taxonomies_for_object_type() { $args = array( 'public' => true, ); $output = 'objects';

在我的WordPress插件中,我使用以下代码为所有已安装的Taxonimies自动添加元框:

add_action( 'init', 'my_plugin_register_taxonomies_for_object_type');
function my_plugin_register_taxonomies_for_object_type()
{
  $args = array(
    'public'   => true,
  );
  $output = 'objects';
  $taxonomies = get_taxonomies( $args, $output );
  foreach  ( $taxonomies as $taxonomy )
  {
    register_taxonomy_for_object_type( $taxonomy->name, 'jt_condet_content' );
  }
}
这对于所有的分类法都非常有效,即使是那些通过插件安装的分类法。然而,我注意到缺少一个分类法。它是一个正常的Post分类法,由子主题使用主题的
init
钩子中的
register\u Taxonomy()
安装

我的插件
my\u plugin\u register\u taxonomies\u for\u object\u type()
,为什么只遗漏了这个分类法?这让我发疯。我想展示所有已安装的公共分类法的元框,无论它们是内置的、通过插件安装的还是通过主题安装的

我玩了一点动作钩子,而且
wp\u-loaded
似乎很管用,但我不能100%相信这是正确的钩子,或者我还好吗?


你能解释一下在
init
上使用
wp\u-loaded
的缺点吗?

如果你在使用
init
并且子主题也在使用
init
,你可能只需要更改钩子的优先级,以确保它在它们之后运行。试着做:

add_action( 'init', 'my_plugin_register_taxonomies_for_object_type', 20 );
假设他们的主题使用默认值(10),那么您的主题将在他们的主题之后运行,并且他们的分类法应该是可用的


我认为使用
wp\u-loaded
的唯一缺点是
wp\u-loaded
将在一些其他操作后运行,例如
widgets\u init
register\u侧边栏
和其他一些操作。如果其他插件/主题有任何其他回调,希望您的帖子类型注册这些分类,并且在加载
wp\u
之前钩住它们,那么它们将失败,因为加载的
wp\u
会在它们之后运行。在大多数情况下,
wp\u-loaded
可能没问题。

如果您使用的是
init
,并且子主题也使用
init
,那么您可能只需要更改钩子的优先级,以确保它在它们之后运行。试着做:

add_action( 'init', 'my_plugin_register_taxonomies_for_object_type', 20 );
假设他们的主题使用默认值(10),那么您的主题将在他们的主题之后运行,并且他们的分类法应该是可用的


我认为使用
wp\u-loaded
的唯一缺点是
wp\u-loaded
将在一些其他操作后运行,例如
widgets\u init
register\u侧边栏
和其他一些操作。如果其他插件/主题有任何其他回调,希望您的帖子类型注册这些分类,并且在加载
wp\u
之前钩住它们,那么它们将失败,因为加载的
wp\u
会在它们之后运行。在大多数情况下,
wp\u-loaded
很可能是可以的。

如果我在init中注册我自己的自定义文章类型,并且只考虑提到的代码片段(将分类法元框添加到我的文章类型中),我应该是安全的,对吧?如果我在init中注册我自己的自定义文章类型,并且只考虑提到的代码片段(将分类法元框添加到我的帖子类型中),我应该是安全的,对吗?