Update: 我很好奇,只是在这个网站上搜索get_panel 方法,这似乎是获取和修改面板实例的方法。E、 g.这个问题"How to access the nav_menus panel with the customizer api?" 似乎相关。WestonRuter确实更改了菜单面板的优先级,但没有应用add_panel()
并使用$wp_customize
实例作为customize_register
回调。我刚检查过,事实上它已经传了下来,因为do_action( \'customize_register\', $this );
在里面WP_Customize_Manager::wp_loaded()
. 之前我看过:
add_action( \'customize_register\', array( $this, \'register_controls\' ) );
其中:
/**
* Register some default controls.
*
* @since 3.4.0
*/
public function register_controls() {
没有输入参数。
因此,我通过删除add_panel()
通过使用$wp_customize
作为的输入参数customize_register
回调,而不是function() use ( &$wp_customize )
.
我深入研究了Customizer类并测试了各种东西。这种方法似乎有效:
/**
* Change priority and title for the \'Menus\' panel in the Customizer
*/
add_action( \'customize_register\', function( \\WP_Customize_Manager $wp_customize )
{
// Get the \'Menus\' panel instance
$mypanel = $wp_customize->get_panel( \'nav_menus\');
if( $mypanel instanceof \\WP_Customize_Nav_Menus_Panel )
{
// Adjust to your needs:
$mypanel ->priority = 21;
$mypanel ->title = \'My Great Menus!\';
}
}, 12 );
但我不知道人们通常是如何做到这一点的,也不知道这是否是一种方式;-)罢工>
我们在这里使用优先级21,因为站点标识部分的优先级为20。
在我们的例子中,我们有一个面板,不是部分,而是在WP_Customize_Manager::prepare_controls()
各部分和面板通过优先顺序进行组合和排序usort
和WP_Customize_Manager::_cmp_priority()
.
在这里,我们可以看到变化:
一
add_action( \'customize_register\', array( $this, \'register_controls\' ) );
After:
通过获取站点标识部分的优先级,我们可以使其更具动态性:/**
* Change priority and title for the \'Menus\' panel in the Customizer
*/
add_action( \'customize_register\', function( \\WP_Customize_Manager $wp_customize )
{
// Get the \'Menus\' panel instance
$mypanel = $wp_customize->get_panel( \'nav_menus\' );
// Get the \'Site Identity\' section instance
$mysection = $wp_customize->get_section( \'title_tagline\' );
if(
$mypanel instanceof \\WP_Customize_Nav_Menus_Panel
&& $mysection instanceof \\WP_Customize_Section
) {
// Adjust to your needs
$mypanel->priority = $mysection->priority + 1;
$mypanel->title = \'My Great Menus!\';
}
}, 12 );