Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
类别和年份的Wordpress URL_Wordpress - Fatal编程技术网

类别和年份的Wordpress URL

类别和年份的Wordpress URL,wordpress,Wordpress,我是wordpress的新手,对URL和归档项目有疑问 基本上我有两类帖子:新闻和媒体报道 当您转到博客的“新闻项目”或“媒体报道”部分-(myblog.com/news item/)时,左侧导航中将生成一个菜单,其中包含每年在该类别中发表的文章。我希望用户能够点击其中一个链接,查看特定类别和年份的所有帖子 例如,url将导致 myblog.com/media-coverage/2006/ 从那以后,下一页将通向 myblog.com/media-coverage/2006/page/2/

我是wordpress的新手,对URL和归档项目有疑问

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

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

例如,url将导致

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; ?>
而且它正是我想要的,我只是不能让它从url中提取日期,我不想为每年/类别组合编写模板。如何以我需要的方式制作wordpress过滤器链接

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

尝试以下操作:

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');
我已将其保存为插件。您可以下载该文件并将其上载到您的插件目录


请告诉我进展如何。

您可能会发现这需要使用.htaccess。另外,也有一些WordPress URL缩写插件可以帮助完成这项任务。我觉得这样做会奏效。我有一堆其他的页面,虽然它们显然使用了其他规则,但当我使用这个插件时,它们被破坏了。我最终只使用了split(“/”,$\u SERVER['REQUEST\u URI']);从url中提取“年”部分,并在我的查询中使用它。可能相当肮脏,但有时当你继承一个项目时,情况就是这样。。。我会继续,并将此标记为已解决。是否有办法修改此项,以便页面从/2013/到/2012到/2011/等等?
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');