WordPress: Фильтровать пользовательский тип записи условно

#wordpress #categories

#wordpress #Категории

Вопрос:

Я пытаюсь создать фильтры для пользовательского типа записи (bedrijf), где посетитель может выбирать такие категории, области и / или другие критерии.

Я делаю это, создавая форму с помощью метода=post и вставляя опции выбора, где значениями в данном случае являются названия категорий, и, обратившись к $_POST, они могут быть вставлены в пользовательский запрос.

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

Пока у меня есть следующая часть:

 $taxquery = '';

if ($_SERVER['REQUEST_METHOD'] == 'POST' amp;amp; !isset($_GET["orderby"])){
    if (!empty($_POST["category_bedrijven"])){
        $category = $_POST["category_bedrijven"];
        $taxquery = "'tax_query' => array(
            array(
                'taxonomy' => 'bedrijfs-category',
                'field'    => 'name',
                'terms'    => '$category'
            )
        ),";
    }

    $args = array(
        'post_type' => 'bedrijf',
        'posts_per_page' => 20,
        $taxquery
    );
}

$args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
  

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

Странная вещь: если я помещаю элементы tax_query непосредственно в $args и передаю $_POST["category_bedrijven"] непосредственно после терминов, запрос работает. Если я объединю это в переменной, это не сработает. Я использовал print_r для печати $taxquery , и он возвращает правильный вывод. Однако запрос не выбирает выбранную категорию.

Чего мне здесь не хватает?

Ответ №1:

Если вы перенесете свою переменную внутрь ‘string’, она будет использоваться как строка со значением $category

Но вы хотите использовать значение переменной, поэтому вам не нужны строковые индикаторы:

'terms' => $category

Ответ №2:

Хорошо, это было неумно. Мне не следовало использовать двойные кавычки при сохранении переменной $taxquery , поскольку она была сохранена как строка…. Их удаление заставило это работать.