Ответы пользователя по тегу WordPress
  • Как сделать на wordpress'е сортировку по цене?

    @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;
    ?>


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