我知道这是一个老问题,但在4.7版中,WordPress改变了处理挂钩的方式,因此上面的答案将不再适用。
相关差异在于my-functions.php
文件,其中包含一个函数,该函数将返回4.7之前和之后版本的挂钩的当前优先级。
(注意:我不喜欢在构造函数中添加挂钩,所以我冒昧地对插件进行了稍微不同的结构设计,但它的工作原理是一样的。)
在我的插件中。php:
require_once( PATH_TO . \'/my-functions.php\' );
require_once( PATH_TO . \'/my-class.php\' );
add_action( \'plugins_loaded\', [ new MyClass(), \'register\' ] );
在我的功能中。php:
if( ! functions_exists( \'current_priority\' ) ):
function current_priority() {
global $wp_filter;
global $wp_version;
return version_compare( $wp_version, \'4.7\', \'<\' ) ?
key( $wp_filter[ current_filter() ] ) :
$wp_filter[ current_filter() ]->current_priority();
}
endif;
在myclass中。php:
class MyClass {
public function register() {
add_action( \'init\', [ $this, \'init\' ] );
add_action( \'wp_footer\', [ $this, \'footer\' ] );
}
public function init(){
//* Add action to current filter at the next priority
add_action( current_filter(), [ $this, \'register_scripts\' ], current_priority() + 1 );
}
public function register_scripts(){
wp_register_script( \'my-script\', plugins_url( \'/script.js\', __FILE__) );
}
public function footer(){
echo( \'<div class="style-me">Rawr this is my plugin.</div>\' );
}
}