WP_Query и сортировка пользовательских типов постов
WP_Query рекомендуют использовать для сортировки пользовательских типов постов. Однако если параметр сортировки извлекается в цикле вывода поста - то WP_Query получит параметр только первого поста. Это отменяет возможность использования WP_Query?
Например, извлекаем количество просмотров материала из уже существующего имеющегося поля _views, и сортируем выдачу постов по нему. Делаем это до вызова WP_Query. Смотрим результат - всем постам из выдачи присвоен одинаковый параметр просмотров. Если же извлекаем количество просмотров в цикле - то WP_Query не получает этот параметр. Что с этим делать?
$_views = (int)get_post_meta(get_the_ID(), '_views', true); // Число просмотров поста $args = array( 'orderby' => $_views, // Параметры сортировки 'order' => 'ASC', 'tax_query' => array( // Определяем таксономию для вывода 'relation' => 'AND', array( 'taxonomy' => 'baza_snanii_category', 'field' => 'slug', 'terms' => $term->slug, 'operator' => 'IN' ) ), ); $query = new WP_Query ( $args ); if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); get_template_part( 'template-parts/content-base', get_post_type() ); endwhile;
--- UPD -----------------------------------------------------------------------------
Благодарен вам. Всё работает и в цикле. Если что, вот мой пример:
$args = array( 'meta_key' => '_views', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'baza_snanii_category', 'field' => 'slug', // строковый параметр 'terms' => $term->slug, 'operator' => 'IN' ) ), );
На этом сайте есть пример сортировки
а у вас неправильно