Я столкнулся с проблемой фильтрации страниц для отображения в запросе 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
WordPress WP Query и фильтрация настраиваемых полей ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1732838263
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'
)
);
Подробнее здесь: [url]https://stackoverflow.com/questions/23358500/wordpress-wp-query-and-custom-field-filtering[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия