无法直接修改模板时如何向<Body>标签添加属性

时间:2020-09-03 作者:Daveh0

这类似于How to add data- attribute to <body> tag 但不同的是,我现在正在寻找一种不需要修改模板文件的解决方案。

我需要向<body> 我无法修改php文件模板的页面集合中的标记。对于大多数人来说,我正在使用一个特定于主题的钩子,它工作得很好。还有其他一些不包含该挂钩。对于这些,我可以通过重写最终的标记来实现我的目标。。。插入属性后,使用的代码来自kfriend的答案https://stackoverflow.com/questions/772510/wordpress-filter-to-modify-final-html-output.

所以我有以下两种方法:

add_filter(\'theme_specific_hook\', \'main_way\');

add_filter(\'wp_footer\', \'alternate_way\');
每个的最终结果是

<body data-my-attr="MY VALUE" class="all-of the required-classes" ...>
这符合我的要求。问题是我没有办法告诉WP什么时候NOT 运行第二个不太理想的过滤器。

我不知道这是否是一种不必要和/或过于复杂的解决方法,但更重要的是,我甚至不知道有条件地采取这两种方法中的一种是否是最有效的方法。

就最佳实践和/或可行性而言,是否有人对此方法有任何意见?关于如何将此属性/值插入到<body> 是否标记这些页面,而不考虑其模板?

1 个回复
SO网友:Tom J Nowell

使用两个挂钩,然后调用did_action 以确定模板挂钩是否已激发。

https://developer.wordpress.org/reference/functions/did_action/

did_action 将返回钩子/操作已激发的次数。有了它,您可以在页脚操作的早期返回

相关推荐

如何在Reaction JS/Gutenberg中使用wp.hooks.addAction()?

我能够成功使用wp.hooks.applyFilters() 和wp.hooks.addFilter(), 但我无法使用wp.hooks.addAction(). 但是console.log() 在某个操作的回调中运行良好。这是我的代码:import { createHooks } from \'@wordpress/hooks\'; let globalHooks = createHooks(); const Header = () => { r