Как в WordPress изменить сортировку в рубрике

Евгений
Автор статьи: Евгений
Веб-мастер, SEO-специалист. Занимаюсь созданием и продвижением сайтов с 2012 года.
опубликовал: 136 статей
Содержание:

Чтобы изменить сортировку в рубрике сайта на WordPress есть несколько способов. Я для этого, обычно, редактирую файлы category.php или archive.php.

Для простоты настройки я удаляю встроенный цикл WordPress и использую WP_Query{}. Что-то типа:

<ul>
<?php
$category_posts = new WP_Query($args);
   if($category_posts->have_posts()) : 
      while($category_posts->have_posts()) : 
         $category_posts->the_post();
?>
<li class="section">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>

В качестве аргументов мы задаём параметры сортировки:

к содержанию ↑

По пользовательскому полю

Допустим каждому посту назначаем приоритет от 10 до 0 и прописываем в пользовательское поле mpm_post_priority. Тогда код будет выглядеть следующим образом:

$categoryID = get_query_var('cat'); // Получаем ID текущей категории
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; //для пагинации. Также в аргументах нужна строка 'paged' => $paged 
$args = array(
		'cat' => $current_cat,
		'paged' => $paged, // для пагинации в WP_Query
		'posts_per_page' => 8,	
		'meta_key' => 'mpm_post_priority',									
		'orderby' => 'meta_value_num',		
		'order'    => 'DESC'
	);
к содержанию ↑

По значениям рейтинга плагина WP-PostRatings

$categoryID = get_query_var('cat'); // Получаем ID текущей категории
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; //для пагинации. Также в аргументах нужна строка 'paged' => $paged
$args = array(
	'cat' => $categoryID,
	'paged' => $paged, // для пагинации в WP_Query
	'posts_per_page' => 8,
	'post_type'  => 'any',
	'meta_key' => 'ratings_users',
	'orderby' => 'meta_value_num',
	'order' => 'DESC'  
	
);

Здесь сортировка по значению поля ratings_users плагина WP-PostRatings, т.е. в данном случае по количеству проголосовавших пользователей (допустим 219 проголосовавших). Вверху списка в рубрике будет запись, которую оценили самое большое количество пользователей.. Можно сортировать ещё и по значению среднему значению рейтинга - ratings_average (например 4.22). Можно также по полю ratings_score.

к содержанию ↑

По рейтингу и дате

Для сортировки по двум различным значениям необходимо более сложные условия. Т.е. сначала все записи сортируются по параметру meta_query  (ratings_users), а уже потом по параметру date_query отсортировывает те, которые были изменены не более 90 дней назад:

$categoryID = get_query_var('cat'); // Получаем ID текущей категории
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; //для пагинации. Также в аргументах нужна строка 'paged' => $paged
$args = array(
	'cat' => $categoryID,
	'paged' => $paged, // для пагинации в WP_Query
	'posts_per_page' => 8,
	'post_type'  => 'any',
	'orderby' => 'meta_value_num',
	'order' => 'DESC',   
	'meta_query' => array(
		array(
            'key' => 'ratings_users',            
        )
	),	
	'date_query' => array(		
		array(
			'column' => 'post_modified', // фильтруем не по дате публикации, а по дате обновления поста
			'after'  => '90 day ago',
		)
	),
);

 

Leave a Reply

Your email address will not be published. Required fields are marked *