正在等待窗口load
无法可靠地工作,因为一旦预览加载,它将覆盖对节激活的任何更改。所以即使你能打电话deactivate
首次加载预览iframe后,下次由于设置更改或在站点周围导航而刷新时,该节将重新激活。这个ready
从预览到窗格的消息包括PHP注册的面板、节和控件的活动状态。通过调用active_callback
在每个上。因此,为了确保该节处于停用状态,应覆盖active_callback
迫使它成为false
. 请注意active_callback
for each construction在加载自定义程序时也被调用,因此这将允许在自定义程序首次加载时覆盖它,从而防止部分暂时出现然后隐藏。
有几种方法可以强制停用该节。假设是colors
您感兴趣的部分。第一种方法是使用customize_section_active
过滤器:
/**
* Ensure the colors section remains deactivated.
*
* @param bool $active Whether the Customizer section is active.
* @param WP_Customize_Section $section WP_Customize_Section instance.
* @return bool Active.
*/
function wpse257129_filter_customize_section_active( $active, $section ) {
if ( \'colors\' === $section->id ) {
$active = false;
}
return $active;
}
add_filter( \'customize_section_active\', \'wpse257129_filter_customize_section_active\', 10, 2 );
第二种方法是覆盖
active_callback
在节本身上。这假设该节注册于
customize_register
优先级10:
/**
* Ensure the colors section remains deactivated.
*
* @param WP_Customize_Manager $wp_customize Manager instance.
*/
function wpse257129_override_colors_section_active_callback( WP_Customize_Manager $wp_customize ) {
$colors_section = $wp_customize->get_section( \'colors\' );
if ( $colors_section ) {
$colors_section->active_callback = \'__return_false\';
}
}
add_action( \'customize_register\', \'wpse257129_override_colors_section_active_callback\', 11 );
另一种方法是完全删除该部分,您可以在
Resetting the Customizer to a Blank Slate:
/**
* Remove the colors section.
*
* @param WP_Customize_Manager $wp_customize Manager instance.
*/
function wpse257129_remove_colors_section( WP_Customize_Manager $wp_customize ) {
$wp_customize->remove_section( \'colors\' );
}
add_action( \'customize_register\', \'wpse257129_remove_colors_section\', 11 );
最后还有一个JavaScript解决方案,在一个JS文件中加入以下内容
customize_controls_enqueue_scripts
具有
customize-controls
作为其依赖项:
wp.customize.section( \'colors\', function( section ) {
section.active.set( false );
section.active.validate = function() {
return false; // Prevent preview from updating state.
};
} );
我认为您选择的停用部分的具体方法取决于您的用例,以及您是否希望在用户自定义会话期间有条件地重新激活该部分。