试图在 WordPress 中获得最低优先级数字
Trying to get lowest priority number in WordPress
您好,我正在尝试从挂接到 wp_head 的所有函数中获取最低优先级编号。
我的代码是这样的。
function wpcrown_wpcss_loaded() {
global $wp_filter;
$lowest_priority = max(array_keys($wp_filter['wp_head']));
add_action('wp_head', 'wpcrown_wpcss_head', $lowest_priority + 1);
$arr = $wp_filter['wp_head'];
}
add_action('wp_head', "wpcrown_wpcss_loaded");
但是它显示的错误是这样的。
Warning: array_keys() expects parameter 1 to be array
Warning: max() [<a href='function.max'>function.max</a>]: When only one parameter is given, it must be an array in
请帮助解决这个问题。
谢谢
小心使用 $wp_filters
作为数组,因为 WordPress 4.7,
这是 wp .4.,7 的指南
Make.wordpress 说明:
如果您的插件直接访问 $wp_filter 全局而不是使用 public 挂钩 API,您可能 运行 会遇到兼容性问题。
案例一:直接在$wp_filter数组中设置回调
$wp_filter['save_post'][10]['my_special_key'] = array( 'function' => 'my_callback_function', 'accepted_args' => 2 );
这将不再起作用,并且会导致致命错误。 $wp_filter['save_post'] 不再是一个简单的数组。相反,它是一个实现 ArrayAccess 接口的对象。
您有两种解决方法。第一种(也是首选)方法是使用 add_filter() 或 add_action() 函数。
add_action( 'save_post', 'my_callback_function', 10, 2 );
如果由于某种原因你绝对不能,你仍然可以解决这个问题。
if ( ! isset( $wp_filter['save_post'] ) ) {
$wp_filter['save_post'] = new WP_Hook();
}
$wp_filter[ 'save_post' ]->回调[10]['my_special_key'] = array( 'function' => 'my_callback_function', 'accepted_args' => 2 );
案例 2:直接取消 $wp_filter 数组中的回调
unset( $wp_filter['save_post'][10][ $my_callback_id ] );
由于与第一种情况相同的原因,这将失败。要解决此问题,您可以使用标准 remove_filter() / remove_action() 函数。
remove_action( 'save_post', 'my_callback_function', 10, 2 );
或者,如果您绝对必须直接访问数组:
if ( isset( $wp_filter[ 'save_post' ] ) ) {
unset( $wp_filter['save_post']->callbacks[10][ $my_callback_id ] );
}
案例 3:检查钩子是否为数组
if ( isset( $wp_filter['save_post'] ) && is_array( $wp_filter['save_post'] ) ) {
// do something
}
这将始终 return 错误。 $wp_filter['save_post'] 是一个 WP_Hook 对象。要检查挂钩是否有回调,请使用 has_action() 或 has_filter()
if ( has_action( 'save_post' ) ) {
// do something
}
案例 4:手动移动 $wp_filter 数组指针
如果您在 $wp_filter 数组指针上调用 next() 或 prev() 以手动管理调用回调的顺序(或者如果您这样做是为了解决 #17817),您可能会不成功。适当使用回调优先级 add_action() / add_filter() 和 remove_action() / remove_filter() 并让 WordPress 管理执行顺序。
正如 Benoti 所说,$wp_filter
不再是一个数组,因此 array_keys
抛出了这些警告,因为需要一个数组。
如果你想在头部末尾添加脚本/样式/你在 wpcrown_wpcss_head
中的任何内容(优先考虑)这应该有效:
1) 评论此操作:
// add_action('wp_head', "wpcrown_wpcss_loaded");
2) 改用这个:
add_action('wp_head', "wpcrown_wpcss_head");
希望对您有所帮助。
您好,我正在尝试从挂接到 wp_head 的所有函数中获取最低优先级编号。 我的代码是这样的。
function wpcrown_wpcss_loaded() {
global $wp_filter;
$lowest_priority = max(array_keys($wp_filter['wp_head']));
add_action('wp_head', 'wpcrown_wpcss_head', $lowest_priority + 1);
$arr = $wp_filter['wp_head'];
}
add_action('wp_head', "wpcrown_wpcss_loaded");
但是它显示的错误是这样的。
Warning: array_keys() expects parameter 1 to be array
Warning: max() [<a href='function.max'>function.max</a>]: When only one parameter is given, it must be an array in
请帮助解决这个问题。 谢谢
小心使用 $wp_filters
作为数组,因为 WordPress 4.7,
这是 wp .4.,7 的指南 Make.wordpress 说明:
如果您的插件直接访问 $wp_filter 全局而不是使用 public 挂钩 API,您可能 运行 会遇到兼容性问题。
案例一:直接在$wp_filter数组中设置回调
$wp_filter['save_post'][10]['my_special_key'] = array( 'function' => 'my_callback_function', 'accepted_args' => 2 );
这将不再起作用,并且会导致致命错误。 $wp_filter['save_post'] 不再是一个简单的数组。相反,它是一个实现 ArrayAccess 接口的对象。
您有两种解决方法。第一种(也是首选)方法是使用 add_filter() 或 add_action() 函数。
add_action( 'save_post', 'my_callback_function', 10, 2 );
如果由于某种原因你绝对不能,你仍然可以解决这个问题。
if ( ! isset( $wp_filter['save_post'] ) ) {
$wp_filter['save_post'] = new WP_Hook();
} $wp_filter[ 'save_post' ]->回调[10]['my_special_key'] = array( 'function' => 'my_callback_function', 'accepted_args' => 2 );
案例 2:直接取消 $wp_filter 数组中的回调
unset( $wp_filter['save_post'][10][ $my_callback_id ] );
由于与第一种情况相同的原因,这将失败。要解决此问题,您可以使用标准 remove_filter() / remove_action() 函数。
remove_action( 'save_post', 'my_callback_function', 10, 2 );
或者,如果您绝对必须直接访问数组:
if ( isset( $wp_filter[ 'save_post' ] ) ) {
unset( $wp_filter['save_post']->callbacks[10][ $my_callback_id ] );
}
案例 3:检查钩子是否为数组
if ( isset( $wp_filter['save_post'] ) && is_array( $wp_filter['save_post'] ) ) {
// do something
}
这将始终 return 错误。 $wp_filter['save_post'] 是一个 WP_Hook 对象。要检查挂钩是否有回调,请使用 has_action() 或 has_filter()
if ( has_action( 'save_post' ) ) {
// do something
}
案例 4:手动移动 $wp_filter 数组指针 如果您在 $wp_filter 数组指针上调用 next() 或 prev() 以手动管理调用回调的顺序(或者如果您这样做是为了解决 #17817),您可能会不成功。适当使用回调优先级 add_action() / add_filter() 和 remove_action() / remove_filter() 并让 WordPress 管理执行顺序。
正如 Benoti 所说,$wp_filter
不再是一个数组,因此 array_keys
抛出了这些警告,因为需要一个数组。
如果你想在头部末尾添加脚本/样式/你在 wpcrown_wpcss_head
中的任何内容(优先考虑)这应该有效:
1) 评论此操作:
// add_action('wp_head', "wpcrown_wpcss_loaded");
2) 改用这个:
add_action('wp_head', "wpcrown_wpcss_head");
希望对您有所帮助。