我创建了一个 WordPress 菜单:
$menu_id = wp_create_nav_menu('MyMenu');
并成功添加菜单项。它们正确显示在外观-> 菜单中。
菜单列表的底部是带有两个复选框的“菜单设置”。第一个是“自动添加...”,第二个是“主菜单(当前设置为:)”。
我需要代码来执行选中该框并保存菜单时发生的事情。
我使用 Thesis-185 作为主题。
我创建了一个 WordPress 菜单:
$menu_id = wp_create_nav_menu('MyMenu');
并成功添加菜单项。它们正确显示在外观-> 菜单中。
菜单列表的底部是带有两个复选框的“菜单设置”。第一个是“自动添加...”,第二个是“主菜单(当前设置为:)”。
我需要代码来执行选中该框并保存菜单时发生的事情。
我使用 Thesis-185 作为主题。
可以使用以下方法读取这些复选框:
get_option('nav_menu_options')
对于“自动添加...”get_theme_mod( 'nav_menu_locations' );
“主菜单(当前设置为)”导航菜单更新时有一个挂钩 ( wp_update_nav_menu
),但不幸的是,系统上有一个错误,因为创建了两个相同的挂钩。
我已经管理了一个丑陋的解决方法,只运行一次:
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;
});
}
});