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

вчера @jas помог, как показать архив годами в моем nav. Он отлично работает, но есть вторая небольшая проблема.

Решение @ 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»).

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

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

Благодаря!

Я не могу прокомментировать это. Почему бы вам не попробовать WP_QUERY.

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

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

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