ОК, это немного вокруг дома, но я, по крайней мере, получил рабочую версию, что мне нужно.
Я хотел бы динамически запрашивать два выбора (две таксономии) либо конкретный термин из каждого (или обоих), либо ЛЮБОЙ термин из каждого (или обоих). Вот почему я хотел, чтобы «код/значение» для чего-то помещался в аргументы для ВСЕХ условий.
В результате я выполнил четыре условных оператора вокруг значений, указанных в строках запроса.
если выбрать == "all", а другой == "all", то нам просто не нужно запускать запрос таксономии, потому что мы все равно просим все. Поэтому, когда у нас есть только одна таксономия для запроса, а другая - все, мы просто пропустим ее.
Это чувствует себя немного моложе, но оно действительно работает и кажется твердым до сих пор.
Вот код (я положил выбрать значения в строки запроса и читать их в)
<!-- BEFORE WE START WE NEED THE POST ID PASSED IN THE QUERY STRING -->
<?php $queryStringValueforState = htmlspecialchars($_GET["state"]); ?>
<?php $queryStringValueforIndustry = htmlspecialchars($_GET["industry"]); ?>
<!-- SEARCH RESULTS -->
<h2>Results for: <?php echo $queryStringValueforState; ?> <?php echo $queryStringValueforIndustry; ?></h2>
<?php
// IF BOTH SELECTS ARE NOT INPUTTED (all)
if ($queryStringValueforState == "All regions" && $queryStringValueforIndustry == "All industries"){
$args = array(
'posts_per_page' => -1,
'post_type' =>'job_listing',
'orderby' => 'ASC'
);
}
// IF BOTH SELECTS HAVE INPUTTED VALUE
if ($queryStringValueforState !== "All regions" && $queryStringValueforIndustry !== "All industries"){
$args = array(
'posts_per_page' => -1,
'post_type' =>'job_listing',
'orderby' => 'ASC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'job_listing_region',
'field' => 'slug',
'terms' => $queryStringValueforState,
),
array(
'taxonomy' => 'job_listing_category',
'field' => 'slug',
'terms' => $queryStringValueforIndustry,
),
),
);
}
// IF REGION SELECT HAS INPUTTED VALUE AND INDUSTRY HAS NOT
if ($queryStringValueforState !== "All regions" && $queryStringValueforIndustry == "All industries"){
$args = array(
'posts_per_page' => -1,
'post_type' =>'job_listing',
'orderby' => 'ASC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'job_listing_region',
'field' => 'slug',
'terms' => $queryStringValueforState,
),
),
);
}
// IF INDUSTRY SELECT HAS INPUTTED VALUE AND REGION HAS NOT
if ($queryStringValueforState == "All regions" && $queryStringValueforIndustry !== "All industries"){
$args = array(
'posts_per_page' => -1,
'post_type' =>'job_listing',
'orderby' => 'ASC',
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'job_listing_category',
'field' => 'slug',
'terms' => $queryStringValueforIndustry,
),
),
);
}
// END CONDITIONAL STATEMENTS AND CONTINUE WITH LOOP
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post();
?>
<div class="single_job_wrapper">
<div class="job-company-logo"></div>
<div class="job-content">
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<?php echo apply_filters('the_job_description', get_the_content()); ?>
<a class="button" href="<?php the_permalink(); ?>">Read More</a>
</div>
</div>
<?php endwhile; ?>