我需要根据网站的父页面(或部分)拉一个子菜单。我有三个部分(我们的客栈、餐厅、活动),每个部分都需要一个单独的子菜单,我的客户可以通过WordPress的原生菜单部分进行编辑。
这是我的header.php
拉动菜单。
<?php
if (is_front_page()) {
wp_nav_menu( array(
\'theme_location\' => \'our-inn-menu\',
\'menu_id\' => \'sub-menu\',
\'container_class\' => \'sub-menu\',
) );
} elseif ($post->post_parent == 4) {
//Parent is Our Inn
wp_nav_menu( array(
\'theme_location\' => \'our-inn-menu\',
\'menu_id\' => \'sub-menu\',
\'container_class\' => \'sub-menu\',
) );
} elseif ($post->post_parent == 6) {
// Restaurant Page
wp_nav_menu( array(
\'theme_location\' => \'our-restaurant-menu\',
\'menu_id\' => \'sub-menu\',
\'container_class\' => \'sub-menu\',
) );
} elseif ($post->post_parent == 8) {
// Activities Page
wp_nav_menu( array(
\'theme_location\' => \'activities-menu\',
\'menu_id\' => \'sub-menu\',
\'container_class\' => \'sub-menu\',
) );
} else {
//Everything Else
wp_nav_menu( array(
\'theme_location\' => \'our-inn-menu\',
\'menu_id\' => \'sub-menu\',
\'container_class\' => \'sub-menu\',
) );
}
问题是,当我在后端分配每个菜单时,它只显示
else
条款,无其他规定。当我移除
else
子句,它显示一个空白
div
.
SO网友:WebElaine
您是否已将菜单分配给wp admin中的主题位置?如果查看“外观”>“菜单”,每个菜单都有一个菜单设置部分,您应该在“显示位置”下选中正确的主题位置
您还可以尝试简化代码。也许出于某种原因,WordPress在代码运行之前还没有识别出它所在的页面/帖子/内容。当事情发生横向变化时,我喜欢将其分解,例如:
<?php
if (is_front_page()) {
echo \'Front Page\';
} elseif ($post->post_parent == 4) {
echo \'Child of Our Inn\';
} elseif ($post->post_parent == 6) {
echo \'Child of Restaurant\';
} elseif ($post->post_parent == 8) {
echo \'Child of Activities\';
} else {
echo \'WP did not identify what content it was on\';
}
?>
使用简单的回声,而不是进入您的实际功能,您可以确定您的条件是否得到满足。如果这些条件从未得到满足,那么出于某种原因,WP还不知道它正在提取什么内容,这可能只是意味着页面上有多个循环或类似性质的内容。
此时,我会将if/else语句移动到一个单独的主题文件中,比如page.php
- 在模板的主循环中进行验证,一旦成功,您可以将wp_nav_menu
回拨到位,确保他们出现。
您可能希望使用查询调试插件来找出为什么WP不知道在您尝试添加代码的地方显示的是什么内容。可能是将代码移到下面wp_header()
如果它还没有低于标准,它可能会有所帮助。