是否可以通过Ajax动态加载Wordpress菜单?
最佳解决方案是使用wp_nav_menu()。
答案 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()
任何输入!