alex4answ
@alex4answ

Сортировка по кастомному полю WordPress?

Добрый день, слегка не понимаю почему не работает моя сортировка.

Создал кастомное поле ACF с именем и меткой sort, по умолчанию указал 0

на страницу вывода постов добавил:
<?php $args = array(
        'post_type' => 'project',
        'hide_empty' => true,
        'posts_per_page' => 12,
        'meta_key' => 'sort', // то самое поле
	'orderby'  => 'meta_value_num',
	'order'    => 'DESC' 
 );

$projects = new WP_Query($args);


В итоге, сортировать сортирует, но если у страницы не заполнено поле sort, он ее просто не выводит.

Как это исправить?
  • Вопрос задан
  • 2228 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
1. У WP_Query нет и никогда не было аргумента 'hide_empty'. Этот аргумент у таксономий встречается, в WP_Term_Query. Соответственно, его значения true или false никакого эффекта не дадут, он игнорируется. Уберите его.
2. 'meta_key' => 'sort' инструктирует WP_Query в первую очередь выбрать записи, у которых данное мета-поле есть.
Сортировка происходит (условно) после выборки, сортируются те результаты, которые соответствуют условиям выборки, в данном случае это записи у которых мета-поле sort существует.
3. Попробуйте вот так:
$args = [
	'meta_query' => [
		'relation' => 'AND',
		'meta_exists_clause' => [
			'key'     => 'sort',
			'compare' => 'EXISTS',
		],
		'meta_value_clause' => [
			'key'  => 'sort',
			'type' => 'numeric',
		],
	],
	'orderby' => [
		'meta_exists_clause' => 'ASC',
		'meta_value_clause'  => 'DESC',
	],
];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ну так сделайте hide_empty = false
и вы говорите показывать только с полем sort: 'meta_key' => 'sort',
или я не понял вопроса?
Ответ написан
Ваш ответ на вопрос

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

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