在一个日期存档页面上,当没有帖子存在时(针对该日期),WordPress会跳转到404页面。
有没有办法让WordPress继续使用原始存档而不是404。这样我就可以if ( have_posts() )
条件输出“未找到帖子”消息。
在一个日期存档页面上,当没有帖子存在时(针对该日期),WordPress会跳转到404页面。
有没有办法让WordPress继续使用原始存档而不是404。这样我就可以if ( have_posts() )
条件输出“未找到帖子”消息。
您可以将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\' );
好吧,反思一下,我不确定我是否对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\'; }
要根据页面视图显示最流行的帖子,我使用以下代码(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