WordPress函数remove_action()、remove_filter()失效

今天改网站的时候发现wordpress 头部有个icon 的代码,我想要去掉。通过打印wp_head 找到钩子"wp_site_icon"。

使用remove_action('wp_head', 'wp_site_icon'); 发现无效。

网上其它人的答案是要去 default-filters.php中禁用这个。这明显不合理。仔细分析了下remove_action的源码。

function remove_filter( $tag, $function_to_remove, $priority = 10 ) {

    global $wp_filter;


    $r = false;

    if ( isset( $wp_filter[ $tag ] ) ) {

        $r = $wp_filter[ $tag ]->remove_filter( $tag, $function_to_remove, $priority );

        if ( ! $wp_filter[ $tag ]->callbacks ) {

            unset( $wp_filter[ $tag ] );
        }
    }
    return $r;

}

其中$wp_filter[ $tag ]->remove_filter( $tag, $function_to_remove, $priority ); 有点精髓了。这段有点看不懂。

不过知道了只能是同一$priority 的才能删除。

所以我想删除 wp_site_icon 需要改成 remove_action('wp_head', 'wp_site_icon',99);

99是wp_site_icon默认的优先级。需要设置成一样才能删除。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章