wp_body_open是WordPress 5.2 中最令人興奮的新特性之一。 引入一個簡單的動作鉤子—— wp_body_open
。 對於主題或者插件開發者來說 ,這個簡單的鉤子對在主題中插入代碼有巨大的影響。
背景
當 WordPress 開發者想要在前端頁面插入 Google Analytics 腳本或者其他自定義腳本時,可以使用wp_head()
或者wp_footer()
函數,這兩個超級有用的函數可以讓開發者使用非常簡單的語法在主題中輕鬆的插入代碼。
wp_head()
函數在WordPress 1.2 中引入,這個函數可以執行 wp_head
動作鉤子,從而在<head>
標籤中插入代碼;同樣, wp_footer()
函數在WordPress 1.5.1中引入,這個函數可以在<body>
標籤結尾之前插入代碼。
但是到目前為止,沒有統一的函數可以在 <body>
標籤 開頭插入代碼,這是 WordPress 非常大的一個缺點,因為開發者為了在<body>
標籤開頭插入代碼需要自己註冊很多函數。
在WordPress 5.2 中引入了 wp_body_open()
函數可以激活 wp_body_open
動作鉤子,這個函數允許開發者在 <body>
標籤 開頭插入自定義的代碼; 目前,所有WordPress 默認主題的header.php
文件中都使用了 wp_body_open()
函數,WordPress 5.2 以後的主題結構如下:
作為 WordPress 主題開發者,您應該在您的主題中引入這個最新的函數。
註:如果在您的主題中有多個<body>
標籤,應根據主題結構在<body>
後面插入 wp_body_open()
函數。
為什麼有的主題增加如下代碼
if ( ! function_exists( 'wp_body_open' ) ) :
/**
* Shim for sites older than 5.2.
*
* @link https://core.trac.wordpress.org/ticket/12563
*/
function wp_body_open() {
do_action( 'wp_body_open' );
}
endif;
兼容性問題:為了在 WordPress 5.2 以前的版本中使用這個新的函數的和動作鉤子,你必須自己註冊一個 wp_body_open()
函數而不引起錯誤,同時保證兼容性。