首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用If语句根据父页生成子菜单

使用If语句根据父页生成子菜单
EN

WordPress Development用户
提问于 2018-01-02 20:35:09
回答 1查看 388关注 0票数 0

我需要拉一个子菜单取决于父页面(或部分)的网站。我有三个部分(我们的酒店,我们的餐厅,活动)每一个需要一个单独的子菜单,我的客户将能够通过本机菜单部分的WordPress。

这是我在header.php中提取菜单的代码。

代码语言:javascript
复制
 '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子句的Our Inn菜单,而没有其他任何内容。当我删除else子句时,它会显示一个空白的div

EN

回答 1

WordPress Development用户

发布于 2018-01-03 18:54:06

您是否将菜单分配到wp-admin中的主题位置?如果您在“外观”>“菜单”下面查看,每个菜单都有一个菜单设置部分,您应该在“显示位置”下检查正确的主题位置。

您还可以尝试简化代码。也许出于某种原因,在代码运行之前,WordPress还没有确定它在哪个页面/post/内容上。当事情顺其自然的时候,我喜欢把它们分解,就像:

代码语言:javascript
复制
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/ back语句移到模板主循环中的单个主题文件(比如page.php )中,以进行验证,一旦工作正常,您就可以将wp_nav_menu调用放回原处,并确保它们出现了。

您可能需要使用查询调试插件来了解为什么WP不知道它在添加代码时显示了什么内容。如果代码还没有低于wp_header(),那么可能会帮助您将代码移到它下面。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/289951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档