WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

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'
							)
						),
				 );
0
Den
18 сентября 2019
  • 0

    На этом сайте есть пример сортировки

    'meta_query' => array(
    	'book_color' => array(
    		'key'     => 'color',
    		'value'   => 'blue',
    		'compare' => 'NOT LIKE',
    	),
    ),
    'orderby' => 'book_color',
    'order'   => 'DESC',

    а у вас неправильно

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация