Показывать архивы по годам только из одной категории


Вчера @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;    
}

Есть ли кто-нибудь, кто поможет мне расширить его до категории "новости" (если требуется идентификатор, идентификатор кошки '4').

Спасибо за все.
Роман

Author: Roman, 2015-11-02

2 answers

Если я правильно понимаю ваш вопрос, что нам просто нужно отправить сообщение в этом подменю только с идентификатором кошки =4, это сделает ваш archive.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' );

Спасибо!

 1
Author: jas, 2015-11-02 16:57:51

К сожалению, я не могу прокомментировать это. Почему бы вам не попробовать использовать WP_QUERY.

Вы можете узнать о WP_Query либо из кодекса, либо лично мне нравится, как tutsplus осваивает wp_query.

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

Вы используете $wpdb для извлечения данных из базы данных. Но я думаю, что это, вероятно, не лучший способ, хотя он работает:)

 0
Author: stlawrance, 2015-11-02 16:47:12