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默認的優先級。需要設置成一樣才能刪除。

 

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