【问题标题】:Activate WordPress menu激活 WordPress 菜单
【发布时间】:2014-06-17 10:53:44
【问题描述】:

我创建了一个 WordPress 菜单:

$menu_id = wp_create_nav_menu('MyMenu');

并成功添加菜单项。它们正确显示在外观->菜单中。

菜单列表的底部是带有两个复选框的“菜单设置”。第一个是“自动添加...”,第二个是“主菜单(当前设置为:)”。

我需要代码来执行选中该框并保存菜单时发生的事情。

我使用的是 Thesis-185 作为主题。

【问题讨论】:

    标签: wordpress wordpress-thesis-theme


    【解决方案1】:

    可以使用以下方式读取这些复选框:

    • get_option('nav_menu_options') for “自动添加...”
    • get_theme_mod( 'nav_menu_locations' ); 表示“主菜单(当前设置为)”

    导航菜单更新时有一个挂钩 (wp_update_nav_menu),但不幸的是 there's a bug on the system,因为创建了两个相同的挂钩。

    我管理了一个丑陋的解决方法,只运行一次:

    add_action( 'load-nav-menus.php', function()
    {
        if( isset( $_POST['save_menu'] ) )
        {
            global $my_hook_only_once;
            $my_hook_only_once = false;
            add_action( 'wp_update_nav_menu', function( $menu_id ) 
            {
                global $my_hook_only_once;
                if( $my_hook_only_once )
                    return;
                $nav_options = get_option('nav_menu_options');
                $locations = get_theme_mod( 'nav_menu_locations' );
                # Firephp logging
                // my_log( $nav_options['auto_add'], 'Auto add' );
                // my_log( $locations, 'Menu locations' );
                $my_hook_only_once = true;
            });
        }
    });
    

    【讨论】:

    • Auto_add 未设置(如我所愿)并且 get_theme_mod 返回正确的 menu_id。问题是主菜单复选框一直处于未选中状态。我想在我的代码中设置它,这样我就不需要手动选中这个框了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多