仅从一个类别按年显示档案

时间:2015-11-02 作者:Roman

昨天@jas帮助我在导航中显示了“按年归档”。它工作正常,但还有第二个小问题。

@jas的解决方案每年从所有类别中筛选我的帖子,我只需要在一个类别中添加过滤器。

为我的导航添加年份的功能是:

add_filter( \'wp_nav_menu_objects\', \'ravs_add_menu_parent_class\' );

function ravs_add_menu_parent_class( $items ) {
  foreach ( $items as $item ) {
   //print_r($item);//print each menu item an get your parent menu item-id
   // get your menu item ID use that ID in below code and you can remove this code after getting ID 
  }
  GLOBAL $wpdb;
  $years = $wpdb->get_results( "SELECT YEAR(post_date) AS year FROM wp_posts WHERE post_type = \'post\' AND post_status = \'publish\' GROUP BY year DESC" );



  foreach($years as $year){
    $link = array (
          \'title\'            => $year->year,
         // \'title\'            =>($year->year == date(\'Y\') ) ?  \'News (Category)\' : $year->year, // this is how you want to print latest year as "News (Category)" 
          \'menu_item_parent\' => \'13\',  // my menu id is 13 ie: ID of menu name test under which years links are displayed 
          \'ID\'               => \'\',
          \'db_id\'            => \'\',
          \'url\'              => \'/\'.$year->year  // to create url of menu item 
      );
    $items[] = (object) $link;
  }
  return $items;    
}
是否有人帮助我将其扩展到“新闻”类别(如果需要ID,猫的ID为“4”)。

谢谢大家
罗马

2 个回复
最合适的回答,由SO网友:jas 整理而成

如果我清楚地理解你的问题,我们只需要从cat id=4的子菜单中获取帖子,这将使你的存档。php仅适用于cat id=4

请将以下代码添加到functions.php:

function wpse75668_filter_pre_get_posts( $query ) {


   if ( $query->is_main_query() && ! is_admin() ) {

      if ( is_date() ) {

        $query->set( \'cat\', \'4\' );
     }
   }
 }
 add_action( \'pre_get_posts\', \'wpse75668_filter_pre_get_posts\' );
谢谢!

SO网友:stlawrance

很抱歉,我无可奉告。为什么不尝试使用WP\\u查询。

你可以从codex或者我个人那里了解WP\\U查询,我喜欢tutsplus掌握WP\\U查询。

http://code.tutsplus.com/tutorials/mastering-wp_query-an-introduction--cms-23023

您正在使用$wpdb从数据库中获取数据。但我认为这可能不是最好的方法,尽管它有效:)

相关推荐

Pagination in Archives

你好,我是wordpress的新手,我很烂。我试图在wordpress中为我的博客页面添加编号分页。我下载了插件“page navi”,进入编辑器并更改了索引中的一个文件。php收件人: <?php if ( $wp_query->max_num_pages > 1 ) : ?> <div class=\"post-nav archive-nav\"> <?php wp_pagenavi();