防止在空的日期档案上出现404错误

时间:2013-07-02 作者:Ben Everard

在一个日期存档页面上,当没有帖子存在时(针对该日期),WordPress会跳转到404页面。

有没有办法让WordPress继续使用原始存档而不是404。这样我就可以if ( have_posts() ) 条件输出“未找到帖子”消息。

2 个回复
SO网友:Milo

您可以将OP答案中的代码移动到404模板过滤器中,并强制WP加载date.php 文件而不是404.php. 它仍然会发送404标题,但会使用不同的模板呈现页面。

function wpd_date_404_template( $template = \'\' ){
    global $wp_query;
    if( isset($wp_query->query[\'year\'])
        || isset($wp_query->query[\'monthnum\'])
        || isset($wp_query->query[\'day\']) ){
            $template = locate_template( \'date.php\', false );
    }
    return $template;
}
add_filter( \'404_template\', \'wpd_date_404_template\' );

SO网友:Ben Everard

好吧,反思一下,我不确定我是否对WP要求太多。我想,从SEO的角度来看,我确实希望将空页面设置为404,我当然不希望将它们编入索引。

我决定使用404模板来输出;找不到帖子“;消息,但因为函数is_date(), is_day() (et al)将无法在404页上工作,我添加了此代码以检测404是否是一个日期存档。

将以下内容粘贴到404.php 要检测URL,请执行以下操作:

global $wp_query;

$is_date_archive = ( isset($wp_query->query[\'year\']) || isset($wp_query->query[\'monthnum\']) || isset($wp_query->query[\'day\']) );
然后我可以使用变量$is_date_archive 相应地修改404模板。

示例(404.php)

global $wp_query;

$is_date_archive = ( isset($wp_query->query[\'year\']) || isset($wp_query->query[\'monthnum\']) || isset($wp_query->query[\'day\']) );

if( $is_date_archive ){ echo \'No posts found\'; } else { echo \'general 404 page\'; }

结束

相关推荐

Restrict query_posts by Date?

要根据页面视图显示最流行的帖子,我使用以下代码(source):<?php query_posts(\'meta_key=post_views_count&orderby=meta_value_num&order=DESC\'); if (have_posts()) : while (have_posts()) : the_post(); ?> <li><a href=\"<?php the_permali