Wordpress网址类别和年份

时间:2011-09-14 20:20:40

标签: wordpress

我是wordpress的新手,对网址和存档项目有疑问。

基本上我有两类帖子:新闻项目和媒体报道。

当您转到博客的“新闻项目”或“媒体报道”部分时 - (myblog.com/news-item/),左侧会生成一个菜单,其中包含每年在该类别中发布的帖子导航。我想要的是让用户能够点击其中一个链接并查看特定类别和年份的所有帖子。

例如,网址将导致

myblog.com/media-coverage/2006/ 

从那里下一页将导致

myblog.com/media-coverage/2006/page/2/

然后模板看起来像这样:

 query_posts('category_name=media-coverage&m=year'); 
   if (have_posts()) : while (have_posts()) : the_post(); ?>
      <div class="entry">
     <?php the_content(); ?>
     <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?>
  </div>
  <?php endwhile; 
   endif; ?>

我不能为我的生活弄清楚如何让wordpress识别URL的'year'部分。我可以在'query_posts'函数中硬编码一年,如

   query_posts('category_name=media-coverage&m=2007'); 

它完全符合我的要求,我只是无法将日期从网址中删除,而我宁愿不为每年/类别组合编写模板。如何以我需要的方式制作wordpress过滤器链接?

编辑:我目前将永久链接设置为/%postname%/,不确定是否有帮助。

1 个答案:

答案 0 :(得分:2)

试试这个:

register_activation_hook( __FILE__, 'flush_rewrite_rules' );
register_deactivation_hook( __FILE__, 'flush_rewrite_rules' );


function so7422487_add_rewrite_rules( $wp_rewrite ) {
    $new_rules = array( 
        '(.+)/(.+)' => 'index.php?category_name='.$wp_rewrite->preg_index(1).'&year='.$wp_rewrite->preg_index(2) );

    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

add_action('generate_rewrite_rules', 'so7422487_add_rewrite_rules');

我已将其保存为Gist的插件。您可以下载该文件并将其上传到您的插件目录。

请告诉我它是怎么回事。