Показывать архивы по годам только из одной категории
Вчера @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').
Спасибо за все.
Роман
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' );
Спасибо!
К сожалению, я не могу прокомментировать это. Почему бы вам не попробовать использовать WP_QUERY.
Вы можете узнать о WP_Query либо из кодекса, либо лично мне нравится, как tutsplus осваивает wp_query.
Http://code.tutsplus.com/tutorials/mastering-wp_query-an-introduction--cms-23023
Вы используете $wpdb для извлечения данных из базы данных. Но я думаю, что это, вероятно, не лучший способ, хотя он работает:)