今天改網站的時候發現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默認的優先級。需要設置成一樣才能刪除。