Intereting Posts
Могут ли некоторые уязвимости в плагинах использоваться, даже если плагин неактивен? Стандартное или предустановленное содержимое для пользовательских типов сообщений Какую страницу я должен использовать для контактной формы? Перемещенная панель WordPress все еще указывает на сервер тестирования Динамически отображать значки шрифтов в виджетах Плагин не работает внутри AJAX Call Пример запроса сообщений, отображающих последнее сообщение с помощью избранного изображения Как хранить несколько входных значений с помощью той же meta_key Название, как страница не работает в Twenty Eleven Как правильно загрузить другую версию основного меню на основе языка пользователя в WordPress? Это хорошее решение? получить идентификатор комментария автора по идентификатору комментария Закажите по названию – но теперь встроенный WordPress func, соберите the_title Как заблокировать / перенаправить URL-адреса post_type = cpt_name? Использование файла javascript для доступа к массиву get posts Изменение параметров WP_LIST_AUTHOR для вывода всех пользователей в сетке (и Paginate)

Оптимальный способ сделать теги в tax_query необязательными?

Есть ли более элегантный способ сделать то же самое. У меня есть три фильтра, которые я хочу использовать для выполнения результатов в четвертом поле. Фильтр – это пул, месяц и теги. Я хочу, чтобы теги игнорировались, если не выбран тег. Я продолжал сталкиваться с проблемой, что если теги не были выбраны, результаты будут отображаться в конечном поле.

Я придумал дешевый способ сделать это, но я думаю, что есть лучший способ.

Мой подход заключается в том, что массив для тегов пуст, а затем меняю значения переменной $ args, которая передается WP_Query. Во время этой проверки я устанавливаю значение переменной с именем $ tag_status в not_empty, если тег будет выбран. Тогда я просто проверяю значение этой переменной.

Взглянуть:

if($tag_status == "not_empty"){ $args = array( 'post_type' => 'daily-marriage-tips', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'cat_tips', 'field' => 'slug', 'terms' => $get_fym_dmt_pool, ), array( 'taxonomy' => 'cat_months', 'field' => 'slug', 'terms' => array_for_query($current_post_id, $get_fym_dmt_month_arr), ), array( 'taxonomy' => 'tag_tips', 'field' => 'slug', 'terms' => array_for_query($current_post_id, $get_fym_dmt_tags_arr), 'relation' => 'AND' ), ), ); } else { $args = array( 'post_type' => 'daily-marriage-tips', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'cat_tips', 'field' => 'slug', 'terms' => $get_fym_dmt_pool, ), array( 'taxonomy' => 'cat_months', 'field' => 'slug', 'terms' => array_for_query($current_post_id, $get_fym_dmt_month_arr), ) ), ); } 

Я попытался поместить запрос тегов в массив и установить отношение к «OR», но это сделало 4-ое поле пустым, если я не выбрал тег. Я не хочу выбирать тег, потому что этот фильтр является бонусным фильтром. Это необязательная вещь. Какой был бы оптимальный подход?

Хорошие дни. Я нашел лучший подход.

У меня есть пользовательская функция, которая смотрит на многомерный массив и определяет, пусты ли они.

Используя это, я нашел способ динамически добавлять массив tax_query в основной запрос для моего wp_query.

Я сохранил «пул» в основных $ args. Я удалил месяц и тег. Если пользователь выбирает месяц, а затем тег, эти новые элементы массива будут добавлены в tax_query.

Это выглядело так:

 $args = array( 'post_type' => 'daily-marriage-tips', 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy' => 'cat_tips', 'field' => 'slug', 'terms' => $get_fym_dmt_pool, ), ) ); // MONTHS ARRAY: check if the months array is empty is_array_empty($current_post_id, $get_fym_dmt_month_arr); if(is_array_empty($current_post_id, $get_fym_dmt_month_arr) == "not_empty"){ array_push( $args['tax_query'], array( 'taxonomy' => 'cat_months', 'field' => 'slug', 'terms' => array_for_query($current_post_id, $get_fym_dmt_month_arr), ) ); } // TAGS ARRAY: check if the tags array is empty is_array_empty($current_post_id, $get_fym_dmt_tags_arr); if(is_array_empty($current_post_id, $get_fym_dmt_tags_arr) == "not_empty"){ array_push( $args['tax_query'], array( 'taxonomy' => 'tag_tips', 'field' => 'slug', 'terms' => array_for_query($current_post_id, $get_fym_dmt_tags_arr), ) ); } 

Моя пользовательская функция is_array_empty принимает два аргумента. Идентификатор сообщения и массив, который вы хотите проверить. Вот как это выглядит:

 // Check if the array is empty function is_array_empty($pID, $array) { $item_arr = array(); foreach($array as $item_arr) { if($item_arr[0] == NULL){ $status = "empty"; }else{ $status = "not_empty"; } } return $status; }