Задать вопрос
no1s1a
@no1s1a
Самый темный час - перед рассветом!

Как сделать на wordpress'е сортировку по цене?

Задача стоит такая:
Сделать сортировку по цене.
Цена в запись выводится из плагина "произвольные поля (ACF)". Мне нужно что бы сортировка записей была от меньшего к большему и на оборот. Может кто то сталкивался с подобным, подскажите пожалуйста, что делать?
  • Вопрос задан
  • 3220 просмотров
Подписаться 3 Оценить Комментировать
Решение пользователя dw0rd3n К ответам на вопрос (5)
@dw0rd3n
Я так понимаю что надо сделать так чтоб посетитель сам мог выбирать сортировку. Этот вид сортировки работает с плагином wp-pagenav

В functions.php

function wp_sort() {
  if ($_GET["sort"] != NULL) { 
    $sort = $_GET["sort"];
    setcookie("sorting", $sort);  
  } 
}


В category.php
<?php wp_sort(); ?>

<?php $pageNum=(get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<form action="<?php echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; ?>" method="GET" >
	<span>Сортировать по цене: </span>
	<input type="hidden" name="cat" value="<?php the_category_ID(); ?>">
	<input type="hidden" name="paged" value="<?php echo $pageNum; ?>">
	<input type="radio" id="sort_asc" name="sort" value="asc" onchange="this.form.submit()"><label for="sort_asc">По возрастанию</label>
	<input type="radio" id="sort_desc" name="sort" value="desc" onchange="this.form.submit()"><label for="sort_desc">По убыванию</label>
	<input type="radio" id="sort_none" name="sort" value="none" onchange="this.form.submit()"><label for="sort_none">Сбросить фильтр</label>
</form>

<?php 
	if($_GET["sort"] == NULL) {
		$args['order'] = $_COOKIE["sorting"];
	} else {
		$args['order'] = $_GET["sort"];
	}		
		$args['cat'] = the_category_ID();	
		$args['orderby'] = 'meta_value_num';
		$args['meta_key'] = 'price';
		$args['paged'] = get_query_var('paged');
		$the_query = new WP_Query( $args);
	?>
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

 <!-- Тут твой шаблон записи -->

<?php endwhile;
	else:
		echo 'страница не найдена';
	endif;
?>


Это мой вариант пользовательской сортировки
Ответ написан