2012-07-16 68 views

回答

0

您可以创建自定义文件来处理主题中的ajax请求,返回wp_nav_menu();的HTML输出并调用该文件。

的wp-content /主题/你的主题/ ajax.php:

<?php wp_nav_menu(); ?> 

这很简单,但效率更高。尽管如此,请注意安全。确保验证输入并且不要eval()任何输入!

1

如果你的主题需要动态初始化JavaScript的菜单,用于初始化代码的模式应该是:传递

jQuery(function($) { 
    function initMainNavigation(container) { 
     /* set up container... */ 
    } 
    initMainNavigation($('.main-navigation')); 

    $(document).on('customize-preview-menu-refreshed', function(e, params) { 
     if ('primary' === params.wpNavMenuArgs.theme_location) { 
      initMainNavigation(params.newContainer); 
      /* optionally sync a previous menu state from params.oldContainer... */ 
     } 
    }); 
}); 

的PARAMS到事件处理程序包括以下特性:

  • newContainer: jQuery对象包含从Ajax检索到的新菜单容器元素;这是你将要操作来初始化的。

  • oldContainer:以前的jQuery对象为被替换的菜单容器保存元素;如果旧菜单中有任何状态应该保留在新菜单中,例如哪些子菜单已展开(如第20页),这很有用。

  • wpNavMenuArgs:在模板中传递给wp_nav_menu()的参数数组,例如template_location。

  • instanceNumber:wp_nav_menu()呼叫正在更新的索引。