Задать вопрос
@Pavstyuk

Как сделать сортировку постов по двум параметрам: значение кастомного поля и дата публикации?

Вывожу посты через WP_query, посты сортируются либо по дате либо по числовому значению кастомного поля. Не могу сделать сортировку по двум параметрам. Нужно так: посты в порядке возрастания значения кастомного поля, но если значение одинаковые, то сначала более свежий пост, затем те, что старше.

Вот код сортировки по значению кастомного поля, работает:

<?php
  $args = array(
    'cat' => '8',
    'meta_key' => 'flat_price',
     'orderby' => 'meta_value_num',
     'order' => 'ASC'
  );
                    
  $query = new WP_Query( $args ); 
    if ( $query->have_posts()) :
      while ( $query->have_posts() ) :
        $query->the_post();
          get_template_part( 'template-parts/content', 'grid' );
      endwhile;   
    endif;
  wp_reset_postdata();
 ?>


Вот код сортировки по дате:

$args = array(
    'cat' => '8',
    'orderby' => 'date',
     'order' => 'DESC',
  );
...


Как мне объединить сортировку по этим двум параметрам?

Пытался делать так, но не получается:

$args = array(
  'cat' => '8',
  'relation' => 'AND',
  'meta_query' => array(
   'meta_key' => 'flat_price',
   'orderby' => 'meta_value_num',
   'order' => 'ASC',
 ),
  'date_query' => array(
     'orderby' => 'date',
     'order' => 'DESC',
  ),
);
...
  • Вопрос задан
  • 817 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
@Pavstyuk Автор вопроса
Нашел решение здесь в моем случае получается так:

$args = array(
                            'cat' => 8,
                            'meta_key' => 'flat_price',
                            'orderby' => array( 'meta_value_num' => 'asc', 'date' => 'desc' ),
                            'posts_per_page'=>'-1'
                       );

                      if ( have_posts() ) : query_posts($args); 
                            while ( have_posts() ) : the_post();
					           get_template_part( 'template-parts/content', 'grid' );
				            endwhile;
				        endif;
                        wp_reset_postdata();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы