跳到主要内容

WordPress 5.2中最退出的功能之一是触发动作的简单功能。但是,此次要功能会对将代码注入WordPress主题的主题和插件开发人员产生巨大影响。

当WordPress开发人员想要在页面前端插入Google Analytics(分析)脚本,Facebook Pixel或任何其他脚本时,他们会钩住  wp_head 或wp_footer注入代码的  动作。这两个非常有用的动作挂钩使开发人员可以使用简单的语法注入自定义代码:

<?php 
函数 custom_code(){
 返回'<!-一些代码->' ; }
 add_action('wp_head' ,'custom_code');     

wp_head()WordPress 1.2.0中引入的功能,它会触发wp_head将数据添加到<head>标签的操作。wp_footer()WordPress 1.5.1中引入的功能可触发wp_footer将数据添加到<body>标签末尾的操作。

问题是直到现在我们还不能在<body>标签的开头插入脚本或样式。这是WordPress核心的主要缺陷,因为市场营销人员需要在显示任何内容之前在body标签的开头注册各种跟踪代码。

新主题结构

WordPress 5.2引入了wp_body_open()触发wp_body_open动作的功能。所有默认主题均在其header.php文件中使用它们。

从WordPress 5.2开始,新的主题结构应如下所示:

<?php 
<?php  // WordPress 5.2主题结构?>
 < html >
   < head >
     ..
     ..
 <?php wp_head(); ?>   < / head >
   < body >
 <?php wp_body_open(); ?>     ..
     ..
 <?php wp_footer(); ?>   < / body >
 < / html >

在相关的WordPress Trac票中阅读更多信息:#42927,#12563和#46679。

更新主题

如果您是主题开发人员,则应在主题中添加新引入的功能。

请注意,某些主题<body>根据其结构具有多个标签。这些主题应wp_body_open()在<body>标签旁边添加下一个。

向后兼容

主题开发人员可能会遇到两个问题以及如何克服它们:

旧的WordPress版本

如果主题开发人员将wp_body_open()功能添加到,header.php它将按预期工作。但是,如果该站点使用的是不具备该wp_body_open()功能的旧WordPress版本,则将导致致命错误。您不能调用不存在的函数。

最简单的解决方案是将主题的最低必需WordPress版本升级到5.2,但这不会为旧版本提供任何向后兼容性。

要在5.2之前的WordPress版本中支持新功能和操作,您应该自己在主题functions.php文件中注册新功能  :

<?php 
if(! function_exists('wp_body_open')){
 / **      *触发wp_body_open操作。     *      *添加了向后兼容性,以支持5.2.0之前的WordPress版本。     * / 函数wp_body_open(){
 / **          *在打开<body>标签之后触发。         * /         do_action('wp_body_open');     }
 } 

自定义主题挂钩

许多主题在body标签的开头使用自己的自定义操作。他们应该考虑迁移到核心wp_body_open 行动。

为了向后兼容,在注入自定义代码时,主题开发人员可以使用条件逻辑来挂钩正确的操作

<?php 
函数 custom_code(){
 返回'<!-一些代码->' ; }
 if(did_action('wp_body_open')){
     add_action('wp_body_open' ,'custom_code'); } else {
     add_action('custom_theme_hook' ,'custom_code'); }

激动人心的变化

WordPress的未来是光明的。引入了越来越多的新功能,并使开发过程更加轻松。如果您知道主题开发人员应该知道的新功能,过滤器或操作,请在下面的注释中分享。

回到顶部