如果循环不返回任何内容,是否会自动显示404页?

时间:2013-02-06 作者:TheWebs

如果您有index.php 使用循环,例如:

if(have_posts()){
    while(have_posts()){
        the_post();
    }
}
如果不返回任何内容,您通常会执行以下操作:

if(have_posts()){
    while(have_posts()){
        the_post();
    }
}else{
    //display message
}
但是,如果您有404.php? 如果循环没有返回任何内容(假设我没有编写循环的其他部分),是否会显示该页面?

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

如果要强制404.php 要加载的模板如果找不到帖子,请使用template_include 过滤器:

function wpa84794_template_check( $template ) {
    global $wp_query;
    if ( 0 == $wp_query->found_posts ){
        $template = locate_template(
            array( \'404.php\', $template ),
            false
        );
    }
    return $template;
}
add_filter( \'template_include\', \'wpa84794_template_check\' );

SO网友:Alex

签出WordPress模板层次结构页面,尤其是图表:http://codex.wordpress.org/Template_Hierarchy#Visual_Overview

简而言之,虽然答案是否定的,但404。php仅在URL未解析为任何其他模板类型时使用。

结束

相关推荐

Add Adsense code in index.php

我的wordpress博客主页有缩略图库。我想添加adsense图像广告代码到5,10位。下面是我索引中的代码 <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div id=\"post-<?php the_ID(); ?>\" <?php post_class(\'thumb\'); ?>> 我发现以下代码来自here (wordpress.stac