WordPress中如何为不存在的自定义链接父项分配子页面?
解决WordPress自定义链接菜单作为父项添加子页面的问题
嘿,这个问题我之前帮朋友处理过,默认WordPress菜单编辑器确实没法直接把页面拖到URL为#的自定义链接下面当子项,但有几个靠谱的方法能解决,完全不用创建真实的父页面,还能适配面包屑功能:
方法一:直接在菜单编辑器设置子项层级
这是最基础的操作,先把页面关联到自定义链接父菜单:
- 先把你要设为子项的页面添加到当前菜单中
- 找到该页面的菜单条目,点击右侧的下拉箭头展开所有选项
- 在「父项」的下拉列表里,直接选择你创建的那个名为
Parent 1的自定义链接 - 点击「保存菜单」,刷新前端就能看到页面已经变成自定义链接的子菜单了
方法二:适配面包屑功能的代码调整
因为自定义链接没有对应的页面ID,很多面包屑插件/主题默认不会识别它的父层级,这时候需要针对你的面包屑工具加代码调整:
情况1:使用主题自带的面包屑
打开主题的functions.php文件,添加以下代码(记得替换子页面ID和面包屑函数对应的钩子):
add_filter('breadcrumbs_trail_items', 'custom_breadcrumb_for_custom_parent', 10, 2); function custom_breadcrumb_for_custom_parent($items, $args) { global $post; // 替换成你的子页面ID,多个用逗号分隔 $target_child_pages = array(123, 456); if (is_page() && in_array($post->ID, $target_child_pages)) { // 在面包屑最前面添加自定义父项 array_unshift($items, '<a href="#">Parent 1</a>'); } return $items; }
情况2:使用Yoast SEO面包屑
如果你用的是Yoast的面包屑,就用这个钩子:
add_filter('wpseo_breadcrumb_links', 'yoast_custom_breadcrumb_parent'); function yoast_custom_breadcrumb_parent($links) { global $post; $target_child_pages = array(123, 456); // 替换成你的子页面ID if (is_page() && in_array($post->ID, $target_child_pages)) { $custom_parent = array( 'url' => '#', 'text' => 'Parent 1' ); // 在当前页面的面包屑前插入自定义父项 array_splice($links, -1, 0, array($custom_parent)); } return $links; }
方法三:用插件简化操作
如果不想写代码,可以试试「Advanced Menu Editor」这类插件,它能让你更灵活地调整菜单层级,甚至给自定义链接添加虚拟的页面属性,方便面包屑工具识别父层级。不过建议优先用代码,避免插件过多导致站点臃肿。
内容的提问来源于stack exchange,提问作者paradeshi
相关产品推荐
相关产品推荐

