我正在使用ACF在Wordpress中创建针对特定分类法的自定义搜索。我没有按分类或关键字排序的问题。但是,我的问题似乎还包括一个下拉列表,用于选择一个值,然后将其合并到新WP_Query的$ args中。
以下是选择字段如何在页面上归档的摘要:
<form action="<?php echo site_url() ?>/wp-admin/admin-ajax.php" method="GET" id="course-filter">
<div class="input-set">
<label>grade</label>
<select name="grade-filter">
<option value=""></option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
</div>
这是我尝试将WP_Query的meta_query和$ args一起获取的方法:
function filter_courses() {
$args = array(
'orderby' => 'name',
'post_type' => 'course',
);
if( isset($_GET['grade-filter'] ) ) :
$args['meta_query'] = array( 'relation' => 'AND' );
endif;
if( isset( $_GET['grade-filter'] ) ) :
$grade = sanitize_text_field( $_GET['grade-filter']);
$args['meta_query'] = array(
'key' => 'grade',
'value' => $_GET['grade-filter'],
'compare' => '=',
);
endif;
if( isset( $_GET['department-filter'] ) ) :
$args['tax_query'] = array(
array(
'taxonomy' => 'department',
'field' => 'id',
'terms' => $_GET['department-filter'],
)
);
endif;
if( isset( $_GET['search'] ) ) :
$search = sanitize_text_field( $_GET['search']);
$query = new WP_Query( array(
'post_type' => 'course',
'tax_query' => $args['tax_query'],
'meta_query' => $args['meta_query'],
's' => $search,
) );
else :
$query = new WP_Query( $args );
endif;
if( $query->have_posts() ) :
while( $query->have_posts() ) : $query->the_post(); ?>
<div class="course-card">
<h4><?php echo $query->post->post_title; ?></h4>
<div class="course-content">
<?php the_content(); ?>
<p class="grade">Grade Level: <?php the_field('grade'); ?></p>
</div>
</div>
<?php endwhile;
wp_reset_postdata();
else :
// var_dump($query);
echo '<p>Sorry, we could not locate what you were searching for.</p>';
endif;
die();
}
该代码在没有等级值的情况下起作用,因此,如果只是搜索字段和部门分类法。
等级'key'是post_type =>'course'上的ACF复选框,要比较的值应在上述ACF字段和选择名称=“ grade-filter”处。
简而言之-如何格式化$ _GET ['grade-filter']来使$ args查询与其他两个搜索元素一起使用?