如果页面显示有条件的发布

时间:2015-02-20 作者:Tom

因此,我显示了3种不同的布局类型,一种用于页面,一种用于帖子(博客、归档、标签、搜索等)一个用于单桩。

最初,我是用这个来决定我是否在显示帖子的页面上:

if ( is_home() ||
    is_category() || 
    is_tag() || 
    is_archive() || 
    is_tax() || 
    is_author() || 
    is_date() || 
    is_search() || 
    is_attachment() ) :
虽然不漂亮,但它涵盖了一切。

我的问题是,这实际上是一样的,但更干净吗?

if ( ! is_page() && ! is_single() ) :
这是否涵盖了第一段代码中的所有内容?我是否遗漏了一些明显的东西,这些东西会导致这项工作无法按预期进行?

我认为它也有同样的作用,但我也想在社区中宣传这一点。

谢谢

EDIT - 以下是我现在拥有的:

// Set up the layout variable for pages
$layout = $generate_settings[\'layout_setting\'];

// If we\'re on the single post page
if ( is_single() ) :
    $layout = null;
    $layout = $generate_settings[\'single_layout_setting\'];
endif;

// If we\'re on the blog, archive, attachment etc..
if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) :
    $layout = null;
    $layout = $generate_settings[\'blog_layout_setting\'];
endif;

// Finally, return the layout
return apply_filters( \'generate_sidebar_layout\', $layout );
似乎工作得很好,比我原来的一组条件语句更简洁。

我找不到任何证据表明is\\U tax由is\\U archive()负责-我错过了吗?

谢谢

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

两人最终都会做同样的工作。但是,您可以改进第一个代码。

is_archive() 退货true 在所有存档页上,包括以下内容

分类法存档页

分类存档页

日期存档页

作者存档页

标记存档页

因此,如果您需要针对所有这些页面,只需使用is_archive().

另一个注释

is_single() 在以下情况下返回trueis_attachment() return true作为附件也是一篇文章。因此,当您在附件页和普通单页上需要一些不同的内容时,使用第二块代码时要小心

总的来说,在您的实现中,有几点我没有理解。您可以使用正确的模板执行所需的操作。您不需要条件

看看Template Hierarchy, 然后看看你需要实现什么。您只需要4个模板

页面-创建page.php

对于主页、存档和搜索页面,请创建index.php. index.php 如果自定义模板(如search.phpcategory.php) 不存在。所以Wordpress将使用index.php 显示主页、存档和搜索结果页面

附件请复制index.php 并将其重命名attachment.php

对于单篇文章,请创建single.php. 这应该足够了

SO网友:Evan Van Slooten

回答这个问题,不,这是不一样的。它更干净,但例如,对于is\\U页和is\\U单页,主页可以有真正的结果。

此外,为什么要对模板显示进行这些检查?没有足够的细节可以确定,但听起来您可以利用Wordpress模板层次结构来完成这项工作,而无需任何检查和更整洁的文件组织/代码分离。

结束

相关推荐