自WP 4.5以来,对自定义程序隐藏核心组件的方式发生了更改。已从$wp\\u customize->remove\\u panel()更改为自定义\\u加载的\\u组件。
https://developer.wordpress.org/reference/hooks/customize_loaded_components/
上面链接中的两个示例可以使用,但如果我在自定义程序的任何其他核心部分(如站点标识(ID:title\\u tagline)或标题图像(ID:Header\\u Image))上尝试,则无法使用。
工程:
function hn_remove_nav_menus_panel( $components ) {
var_dump($components);
$i = array_search( \'nav_menus\', $components );
if ( false !== $i ) {
unset( $components[ $i ] );
}
return $components;
}
add_filter( \'customize_loaded_components\', \'hn_remove_nav_menus_panel\' );
不工作:
function hn_remove_title_tagline_panel( $components ) {
$i = array_search( \'title_tagline\', $components );
if ( false !== $i ) {
unset( $components[ $i ] );
}
return $components;
}
add_filter( \'customize_loaded_components\', \'hn_remove_title_tagline_panel\' );
我曾尝试var\\u转储($组件);同样,但只能看到该数组中的nav\\u菜单和小部件,这将解释为什么只能删除这两个组件。
任何关于如何隐藏其他部分的提示都将不胜感激。
最合适的回答,由SO网友:TheDeadMedic 整理而成
如果您检查WP_Customizer
, 你会看到没有title_tagline
或header_image
过滤器运行时:
final class WP_Customize_Manager {
protected $components = array( \'widgets\', \'nav_menus\' );
public function __construct() {
// a bunch of requires
$components = apply_filters( \'customize_loaded_components\', $this->components, $this );
}
}
使用
customize_register
在WP添加部分后,用钩子将其移除:
function wpse_225164_remove_core_sections( $wp_customize ) {
$wp_customize->remove_section( \'title_tagline\' );
$wp_customize->remove_section( \'header_image\' );
}
add_action( \'customize_register\', \'wpse_225164_remove_core_sections\' );