Wordpress如何通过添加额外的html属性来修改页面的<body>标签
Posted
技术标签:
【中文标题】Wordpress如何通过添加额外的html属性来修改页面的<body>标签【英文标题】:Wordpress how to modify <body> tag of a page by adding extra html attributes 【发布时间】:2021-12-18 06:58:49 【问题描述】:在 wordpress 中,有没有一种方法可以像这样在页面上设置 body 标签属性:
<body onBlur="window.focus()">
WP Block editor不允许编辑页面html,因为它当然是可视化编辑器。
我会使用这段代码,这样我就可以让弹出窗口始终保持在最前面。
顺便说一句,我解决了如何弹出窗口的问题,只是不知道如何让它保持在顶部
how to create Popup window
如果有其他方法请告诉我。
感谢@ruvee
在这里写了一步一步的说明:update body tag
【问题讨论】:
您是否有权访问文件系统或只有管理员权限? 我可以访问两者 【参考方案1】:您可以使用一个名为wp_footer
的钩子。您可以使用纯/香草javascript
向您的body
标签添加额外的属性,如下所示:
add_action("wp_footer", "your_theme_adding_extra_attributes");
function your_theme_adding_extra_attributes()
?>
<script>
let body = document.getElementsByTagName("body");
body[0].setAttribute("onBlur", "window.focus()");
</script>
<?php
代码进入您活动主题的functions.php
文件。
这个答案已经在 wordpress 5.8
上测试过并且有效。
在特定页面上运行:
根据您需要在哪个页面上运行它,您可以使用不同的条件语句。例如:
仅在存档页面上:is_archive()
将是一个适当的条件检查
仅在您博客的索引上:
is_home()
将是一个条件检查。
仅在可能是也可能不是您的博客索引的首页上:
is_front_page()
将是一个条件检查
等等……
UPDATE(与不属于第一个问题的第二个请求有关)
如果你有一个带有blah
slug 的页面并且你想修改它的body
标签,你可以使用下面的sn-p:
# The following code would only get executed on yourwebsite.com/blah
add_action("wp_footer", "your_theme_adding_extra_attributes");
function your_theme_adding_extra_attributes()
if(is_page("blah")) ?>
<script>
let body = document.getElementsByTagName("body");
body[0].setAttribute("onBlur", "window.focus()");
</script>
<?php
is_page
Docs
对于需要添加额外的class
而不是额外的attributes
的人,有一个名为body_class
的钩子,并且 *** 上已经有太多答案,例如:
Add a custom class name to Wordpress body tag? body class in WooCommerce
【讨论】:
谢谢,我怎样才能只针对特定页面而不是一般页面? 您需要检查您是否在特定页面上。如果您告诉我您对哪个页面感兴趣,我会给您与您的页面名称匹配的条件语句。 它是使用具有永久链接 /blah 的页面菜单手动创建的页面...找不到其他标识符 更新了我的答案。该代码只能在/blah
页面上运行!!!
非常感谢您会尝试并回复【参考方案2】:
您可以连接到 body 类过滤器并为您的属性做一个回显,而不是过滤器的工作方式,但它可以在没有 js 的情况下完成工作。
add_filter('body_class', 'bt_add_attr_to_body');
function bt_add_attr_to_body ($classes)
echo 'onBlur="window.focus()"';
return $classes;
我从您的 cmets 中注意到,您还希望限制到特定页面。 假设您只想在首页上发生。 你需要为首页添加一个 if 条件,像这样
add_filter('body_class', 'bt_add_attr_to_body');
function bt_add_attr_to_body ($classes)
if (is_front_page()) echo 'onBlur="window.focus()"';
return $classes;
根据您希望此属性出现的位置,您需要创建适当的条件。
【讨论】:
谢谢...看起来很老套...过滤器是用来做什么的以上是关于Wordpress如何通过添加额外的html属性来修改页面的<body>标签的主要内容,如果未能解决你的问题,请参考以下文章