Wordpress菜单 - ajax加载

时间:2012-07-16 09:29:49

标签: ajax wordpress

是否可以通过Ajax动态加载Wordpress菜单?

最佳解决方案是使用wp_nav_menu()。

2 个答案:

答案 0 :(得分: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... */
        }
    });
});

传递给事件处理程序的参数包含以下属性:

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

  • oldContainer:保存替换菜单容器元素的上一个jQuery对象;如果旧菜单中的任何状态应该保留在新菜单中,例如扩展哪个子菜单(如Twenty Fifteen),这很有用。

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

  • instanceNumber:要更新wp_nav_menu()来电的索引。

答案 1 :(得分:0)

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

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

<?php wp_nav_menu(); ?>

这很简单,但效率很高。但要小心安全性。确保验证输入并且不要eval()任何输入!