WordPress WP Query и фильтрация настраиваемых полейPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 WordPress WP Query и фильтрация настраиваемых полей

Сообщение Anonymous »

Я столкнулся с проблемой фильтрации страниц для отображения в запросе WP.

Я использую справочник по запросам Codex WP для настраиваемых полей с помощью ACF (плагин Advanced Custom Fields, но это не имеет значения, потому что он работает так же, как параметры настраиваемого поля WP) для фильтрации страниц.

В параграфе «Обработка нескольких настраиваемых полей» Кодекс содержит пример с 2 условия. Мы можем использовать отношение ИЛИ или И. Я работаю для обоих, пока у вас не будет третьего условия (массива).

Они используют пример:

'relation' => 'OR',
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'NOT LIKE'
),
array(
'key' => 'price',
'value' => array( 20, 100 ),
'type' => 'numeric',
'compare' => 'BETWEEN'
)


Он имеет только 2 массива. Когда ставлю 3-е, ничего не показывает. В режиме отладки вижу ошибку:

WordPress database error: [Lost connection to MySQL server during query]


Когда я использую AND, это работает, но мне нужно использовать OR. К сожалению, это приводит к отключению MySQL.
Я пробовал запросить у phpMySQL тот же запрос, что и у WP. Это вызывает проблему - phpMyAdmin говорит то же самое:

Lost connection


Есть идеи?
Может быть, мне стоит попробовать другой подход к фильтрации? (может быть, мне следует использовать таксономию?)

Вот код, который я использую:

$query_array = array('relation' => 'OR');
array_push($query_array,
array(
'key' => 'filter1',
'value' => 'value1',
'compare' => 'LIKE'
),
array(
'key' => 'filter1',
'value' => 'value2',
'compare' => 'LIKE'
),
array(
'key' => 'filter1',
'value' => 'value3',
'compare' => 'LIKE'
)
);

$args = array(
'order' => $order_array,
'meta_key' => $meta_key,
'orderby' => $orderby,
'post_type' => 'page',
'paged' => $paged,
'post__in' => $postIDs,
'posts_per_page' => 12,
'paged' => get_query_var('paged'),
'meta_query' => $query_array
);

query_posts($args);
?>


(переменные для $args, конечно, установлены)

Я не знаю, почему я не могу используйте

'compare' => '='


но, наверное, именно поэтому я не могу использовать:

$query_array = array('relation' => 'OR');
array_push($query_array,
array(
'key' => 'filter1',
'value' => array('value1', 'value2', 'value3'),
'compare' => 'IN'
)
);


Подробнее здесь: https://stackoverflow.com/questions/233 ... -filtering
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»