【问题标题】:Conditionally display menu for page type in Wordpress在 Wordpress 中有条件地显示页面类型的菜单
【发布时间】:2014-05-12 01:16:57
【问题描述】:

我对 Wordpress 比较陌生,我正在为客户创建自定义主题。我想根据页面类型显示或删除主菜单。我研究了几个选项,例如从 header.php 中删除导航并单独引用它,并使菜单有条件,这是更可取的。

我的主题中有一个名为“登陆页面”的自定义页面类型,我希望菜单永远不会显示在该页面上,尽管它会出现在其他所有页面上。最终会有很多这样的事情,我宁愿我不必干预。

我宁愿不复制我的 header.php 文件,但我只能找到通过页面名称或 ID 有条件地显示菜单的参考,如下所示,这看起来很荒谬。

<?php
 if (is_page('contact')){
 <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
elseif (is_page('gallery')){
 <?php include(TEMPLATEPATH.'/headerB.php'); ?>
}
else {
 <?php include(TEMPLATEPATH.'/headerA.php'); ?>
}
?>

我不会像上面那样包含文件,而是将整个内容放入我的标题中,并让导航成为有条件的。有谁知道我应该如何使用我的自定义页面类型登录页面而不是页面名称来解决这个问题,以便使用该类型创建的每个页面都不会有菜单?

谢谢

【问题讨论】:

    标签: php wordpress wordpress-theming


    【解决方案1】:

    您是在谈论自定义帖子类型 (CPT) 还是名为 landing-page 的页面?

    它们完全不同。见http://codex.wordpress.org/Post_Types

    无论如何,这将适用于自定义帖子类型或页面:

    if ( !is_singular( 'custom-post-type-name-or-page-slug-here' ) ) {
    
    get_template_part('menu');
    
    }
    

    上面写着:“如果此页面不是单页或CPT,请从主题文件夹中加载文件menu.php。”

    另见http://codex.wordpress.org/Include_Tags

    get_template_part() 标签包含文件 {slug}.php 或 {slug}-{name}.php 来自您当前主题的目录,自定义 包括除页眉、侧边栏、页脚之外的标签。

    【讨论】:

    • 除非我完全误解了自定义帖子类型的概念(这是可能的),否则我认为两者都不是。这与帖子或博客无关,也与我通过管理面板创建的页面无关,尽管那是我选择了“模板”。我正在创建主题,我希望编辑的部分是我通常描述为页面模板的部分。
    • 好的,但是您在问题中命名的“登陆页面”的 slug (永久链接)是什么?这必须是您在管理员中创建的页面。上面的条件将进入页面模板,如 page.php 或 header.php,但您必须在管理员中创建一个名为“登录页面”的页面,您不希望菜单出现在该页面上。
    • 没关系!谢谢你的帮助。使用您的答案,我找到了使用“if(!is_page_template”的解决方案,这正是我正在寻找的。我需要在使用特定模板的所有页面上有条件地排除菜单,而无需提前知道页面标签、永久链接或 ID因为有些内容是动态创建的。
    • 是的,is_page_template 会起作用,它是一种不同但更好的方法来完成您想做的事情。
    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多