无法将设置添加到“NAV_MENUS”定制器面板

时间:2018-02-13 作者:JacobTheDev

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?

// add custom options to the Customizer
function nssra_customizer_options($wp_customize) {
    // add "menu primary flex" checkbox setting
    $wp_customize->add_setting("menu_primary_flex", array(
        "capability"        => "edit_theme_options",
        "default"           => "1",
        "sanitize_callback" => "nssra_sanitize_checkbox",
    ));

    // add "menu primary flex" checkbox control
    $wp_customize->add_control("menu_primary_flex", array(
        "label"    => __("Stretch the primary menu to fill the available space.", "nssra"),
        "section"  => "nav_menus",
        "settings" => "menu_primary_flex",
        "std"      => "1",
        "type"     => "checkbox",
        "priority" => 1,
    ));
}
add_action("customize_register", "nssra_customizer_options");

// sanitize checkbox fields
function nssra_sanitize_checkbox($input, $setting) {
    return sanitize_key($input) === "1" ? 1 : 0;
}

2 个回复
最合适的回答,由SO网友:obiPlabon 整理而成

无法将任何控件/设置添加到nav_menus 因为那不是一个部分,那是一个面板。和控制/设置只能添加到节中。因此,您必须首先在nav_menus 面板,然后将控件/设置添加到该部分。检查以下代码

function nssra_customizer_options( $wp_customize ) {
    // add a custom section
    $wp_customize->add_section( \'nav_menus_custom\', array(
        \'title\' => __( \'Custom Section Title\', \'nssra\' ),
        \'panel\' => \'nav_menus\'
    ) );

    // add "menu primary flex" checkbox setting
    $wp_customize->add_setting( \'menu_primary_flex\', array(
        \'capability\'        => \'edit_theme_options\',
        \'default\'           => \'1\',
        \'sanitize_callback\' => \'nssra_sanitize_checkbox\',
    ) );

    // add \'menu primary flex\' checkbox control
    $wp_customize->add_control( \'menu_primary_flex\', array(
        \'label\'    => __( \'Stretch the primary menu to fill the available space.\', \'nssra\' ),
        \'section\'  => \'nav_menus_custom\',
        \'settings\' => \'menu_primary_flex\',
        \'std\'      => \'1\',
        \'type\'     => \'checkbox\',
        \'priority\' => 1,
    ));
}
add_action( \'customize_register\', \'nssra_customizer_options\' );

// sanitize checkbox fields
function nssra_sanitize_checkbox( $input, $setting ) {
    return sanitize_key( $input ) === \'1\' ? 1 : 0;
}

Update

您必须添加节description 要创建类似于外观的菜单位置,如果要更改节位置,可以设置priority. priority => 5 将在菜单位置之前放置自定义部分,如果这样做,则可能需要调整一些样式。请检查下面的代码以获取更新的节配置。

$wp_customize->add_section( \'nav_menus_custom\', array(
    \'title\'       => __( \'Custom Section Title\', \'nssra\' ),
    \'panel\'       => \'nav_menus\',
    \'description\' => __( \'Section description goes here.\', \'nssra\' ),
    \'priority\'    => 5
) );

SO网友:dj.cowan

在这里添加以下内容,以防你像我一样迷路。@odiPlabon的解决方案适用于;nav\\U菜单;面板我来是想在各个菜单部分添加设置,例如主题菜单,如;“主菜单”;或“或”;辅助菜单;。

对于那些像我一样迷路的人,你要找的“部分”是;nav\\U菜单[$n]”;。其中,$n是导航菜单的术语\\u id。

您可以在当前查看菜单的地址栏中的url查询参数中看到term\\u id–在Wordpress Admin上>;外观(>);菜单第I页。“e;”;?操作=编辑(&A);菜单=43“<;--43为术语\\u id

$menus = wp_get_nav_menus();
if ( ! $menus && ! is_iterable($menus)) :
    return;
endif;

        foreach ($menus as $menu) :
            //
            $wp_customize->add_setting(
                    \'menu_postition_\' . $menu->term_id, // your setting name
                    array(
                        \'settings\' => \'nav_menu[\' . $menu->term_id . \']\',
                        \'default\' => \'menu-static\',
                    )
            );
            //
            $wp_customize->add_control(
                    \'menu_postition_\' . $menu->term_id, // your setting name
                    array(
                        \'type\' => \'select\',
                        \'priority\' => 20,
                        \'label\' => __(\'Menu Position:\',\'text-domain),
                        \'section\' => \'nav_menu[\' . $menu->term_id . \']\',
                        \'choices\' => array(
                            \'menu-static\' => \'Normal\',
                            \'menu-fixed-top\' => \'Fixed Top\',
                            \'menu-sticky-top\' => \'Sticky Top\',
                        ),
                    )
            );
        endforeach;

结束

相关推荐

Use menus with anchors

我有一个CPT归档页面,我想创建一个导航菜单,该菜单将跳转到表单中的锚定<a name=\"post-slug\" http=\"{the permalink goes here}>The CPT Title</a>我已经能够在模板文件中创建锚定,所以这不是问题对于页面顶部的链接本身,我可以手动创建它们,也可以使用WordPress菜单系统中的自定义链接。。。。但是有很多,所以我宁愿尝试在WordPress菜单系统中创建一个常规菜单。问题是,我需要以某种方式调整它的输出,以更改常规