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_pageDocs


对于需要添加额外的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>标签的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 WordPress 帖子的默认内容?

在使用 EF 期间如何在 c# 中为类添加额外的属性

WordPress - 如何使用 Bootstrap 4.5 在工具提示中添加 HTML?

向 WordPress 导航项添加额外的 div

PHP 将额外字段添加到Wordpress用户配置文件

iOS 给系统的对象添加额外的属性----关联属性