WordPress自定义导航无法自动加载页面及自动添加页面链接问题咨询
嘿,我来帮你搞定这个WordPress导航的麻烦!你现在的问题核心是:硬塞进header.php的静态HTML导航是固定死的,WordPress没法自动把新页面链接加进去——得改用WordPress原生的导航菜单系统来实现动态主导航,具体步骤如下:
第一步:在主题functions.php中注册导航菜单位置
WordPress需要知道你打算在哪里放置自定义导航,所以先给主题添加注册代码。打开你当前主题的functions.php文件,在合适的位置(比如主题设置相关的代码块末尾)添加这段代码:function mytheme_register_nav_menus() { register_nav_menus( array( 'main-nav' => __( '主导航', 'mytheme' ), ) ); } add_action( 'after_setup_theme', 'mytheme_register_nav_menus' );注意把
mytheme换成你主题的文本域(如果不知道的话,看主题目录里的style.css开头的Text Domain字段),main-nav是这个导航位置的标识,后面的“主导航”是后台显示的名称。第二步:替换header.php中的静态导航为动态菜单调用
把你原来粘贴到header.php的静态HTML导航代码,替换成WordPress的动态菜单调用代码,同时保留你原来的CSS类名,这样你写的自定义样式就能完全复用:<!-- nav --> <nav class="your-original-nav-class"> <!-- 这里用你原来导航容器的类名 --> <?php wp_nav_menu( array( 'theme_location' => 'main-nav', // 和刚才注册的标识对应 'menu_class' => 'your-original-menu-ul-class', // 原来ul标签的类名 'container' => false, // 避免WordPress自动多套一层div容器 'fallback_cb' => false, // 如果没设置菜单就不显示 fallback(可选) ) ); ?> </nav> <!-- end nav -->一定要把
your-original-nav-class和your-original-menu-ul-class换成你原来HTML导航里的实际类名,这样你的CSS样式不用做任何修改就能生效。第三步:在WordPress后台配置菜单并开启自动添加页面
登录你的WordPress后台,进入外观 > 菜单:- 新建一个菜单,给它起个名字(比如“主菜单”);
- 在页面列表里把需要的页面添加到菜单里;
- 往下拉到“菜单设置”,把这个菜单分配给你刚才注册的“主导航”位置,点击保存;
- 如果你想让新建页面自动加入导航,点击页面右上角的屏幕选项,勾选“自动添加页面”,以后新建页面就会自动出现在这个菜单里了。
这样修改后,你的自定义导航样式完全保留,同时又拥有了WordPress动态菜单的功能——新建页面会自动同步到导航里,删除页面也能在后台菜单里轻松管理。
内容的提问来源于stack exchange,提问作者msusrdesigner

