我有一个问题,自定义日期档案如何显示它的日期。php
这是我的自定义存档代码
<?php
$o_query_result = new WP_Query( array( \'posts_per_page\' => -1, \'post_status\' => \'publish\', \'post_type\' => $post_type ) );
$a_archive_post_count = array();
$a_archive_post_url = array();
if( isset($o_query_result->posts) && !empty($o_query_result->posts) )
{
foreach( $o_query_result->posts AS $o_post_details )
{
$datetime = new DateTime($o_post_details->post_date);
$s_array_index = $datetime->format(\'Y\') ."年". $datetime->format(\'m\') ."月";
if( array_key_exists($s_array_index, $a_archive_post_count) )
{
$a_archive_post_count[$s_array_index] = $a_archive_post_count[$s_array_index] + 1;
}
else
{
$a_archive_post_count[$s_array_index] = 1;
}
$a_archive_post_url[$s_array_index] = \'/\' . $datetime->format(\'Y\') .\'/\'. $datetime->format(\'m\');
}
wp_reset_postdata();
}
?>
<ul class="introduction__blog__list">
<?php foreach ($a_archive_post_count as $s_archive_post_count_key => $s_archive_post_count_value): ?>
<li class="introduction__blog__list__item--sb mt10p">
<a class="" href="<?php echo home_url(); ?>/<?php echo $post_type; ?><?php echo $a_archive_post_url[$s_archive_post_count_key] ?>">
<p class="introduction__blog__list__summary__date">
<?php echo $s_archive_post_count_key . \' (\' .$s_archive_post_count_value. \')\' ?>
</p>
</a>
</li>
<?php endforeach; ?>
</ul>
它将给我一个结果:2016年年11月 (6) ->6表示自定义博客中有6篇帖子
如果用户单击上面有链接的日期(例如)http://portfolio.com/custom_blog/2016/11 , 它给了我一个错误,比如找不到页面。
是否有办法在日期中显示结果。php还是我应该为每个自定义帖子创建一个页面,比如custom\\u blog/2016/11?
我试过了http://portfolio.com/2016 -> 它显示了我输入日期的代码。php,但我不想这样做。
请告诉我如何才能得到最新的结果或输出。php或其他页面/文件。
SO网友:Bhaskar K C
您需要为此编写自定义重写规则。
只需将以下代码复制到函数中即可。php和刷新重写规则。
function xlinkerz_custom_archive_rewrite_rule( $rewrite_rules ) {
$custom_slug = \'custom_archive\';
$year_rule = array( $custom_slug . \'/([0-9]{4})/([0-9]{1,2})/?$\' => \'index.php?year=$matches[1]&monthnum=$matches[2]\' );
$month_rule = array( $custom_slug . \'/([0-9]{4})/?$\' => \'index.php?year=$matches[1]\' );
// Merging rules
$rewrite_rules = $year_archive + $month_archive + $rewrite_rules;
return $rewrite_rules;
}
add_filter(\'rewrite_rules_array\', \'xlinkerz_custom_archive_rewrite_rule\');
*刷新重写规则有几种方法,最简单的方法是转到管理区域并保存永久链接。请记住,不应调用flush\\u rewrite\\u rules();在定义新重写规则的函数中。