How to add theme support?

时间:2016-01-19 作者:Bryan Willis

我想这已经是个问题了,但我还没有遇到过。

I\'m wondering what the correct hook for checking theme support is in a theme and also a plugin.

function my_theme_or_plugin_add_theme_support_feature()
    if (current_theme_supports( $feature )) {
        add_action( $hook, $function_to_add, $priority, $accepted_args );            
        add_filter( $tag, $function_to_add, $priority, $accepted_args );
    }
}
add_action( $hook, \'my_theme_or_plugin_add_theme_support_feature\');
因此,在上述示例中my_theme_or_plugin_add_theme_support_feature 检查、运行主题和插件,是否有必要?两者都一样吗?

Examples:

add_action( \'wp_loaded\', \'my_theme_or_plugin_add_theme_support_feature\');

add_action( \'init\', \'my_theme_or_plugin_add_theme_support_feature\');

add_action( \'after_setup_theme\', \'my_theme_or_plugin_add_theme_support_feature\');

Update:

事实上我刚发现this question, 这非常相似。

还有一个类似的question I asked here 我可以用add_theme_support 在插件中。。。然而,它并不是百分之百的工作。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

这真的取决于你在这里需要做什么。通常的方法是将所有主题支持功能挂接到after_setup_theme 因为一些显而易见的原因。

after_setup_theme 是第一个可以为主题添加任何类型支持的动作挂钩。某些功能必须在此处注册,以后无法注册。想到的一个特性是支持post格式。post_format 是在上注册的内置分类法init. 如果我们跳过以下操作:

  • auth_cookie_malformed

  • auth_cookie_valid

  • set_current_user

init 将是之后的下一个钩子after_setup_theme 做插件和主题相关的事情。像post_format 注册于init, 在这里添加主题支持将为时已晚,优先级错误。因此,如果您需要检查帖子格式的主题支持,您需要在after_setup_theme 优先级很低。我倾向于使用PHP_INT_MAX 常量值作为优先级或PHP_INT_MAX + 1 . 你也可以试试set_current_user 它在后面运行after_setup_theme 就在那之前init

通常,所有内置主题支持功能都是在after_theme_support 保持代码的一致性,但您根本不应该依赖于此。像@toscho described in his answer here, wp_loaded 是一个很好的钩子,用于检查某个功能是否已受支持(有例外,请参见下面的注释)。到…的时候wp_loaded 如果没有,那么所有的主题支持特性都应该被添加,那么这个主题就做了一些非常错误的事情,你真的不能为了一个糟糕的主题而牺牲你的代码。之后的所有挂钩wp_loaded 与内容输出和操作将发送到浏览器的输出有关。

重要提示

如前所述,某些功能(如后期格式支持)无法添加到init 或者在那之后的任何钩子,因为为时已晚,所以wp_loaded 在这种情况下,为帖子格式添加主题支持就太晚了。正如我已经说过的,您需要尽可能晚地将函数挂接到after_setup_theme

结论现在这里有了真正正确的钩子。挂钩取决于支撑特征。一般来说,使用它是安全的wp_loaded 检查特定custom 支持特性,在我看来,这将是最新的挂钩,您应该使用它来添加任何类型的主题支持特性。对于内置支持功能,after_setup_theme 优先级很低(甚至set_current_user)应满足以下条件init 添加post格式等功能为时已晚

相关推荐

Wodpress XML Import hooks

要将来自给定远程站点的帖子合并到给定类别下的一个站点中,我如何挂接导入插件以保存给定类别的帖子:给出的示例:接收方站点具有类别auto 我想从(例如)导入所有帖子auto.com 在下面this category. 如果远程帖子有另一个类别auto 添加为子级。应该下载内部帖子图片,更新帖子内的所有链接,因此我已经找到了一个核心方法,下面是我尝试的方法,但我认为这可以变得更简单<?php if (!class_exists(\'Wp_Http\')) in