我正在为一个WordPress网站制作一个过滤器,目前我正在寻找一种方法来缩短这段代码,我知道这是可能的,但目前我不知道如何,我正在考虑将数组合并到到查询的一个主数组。
这是我目前的代码:
自己:
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="row">
<?php // var_dump( get_terms( array( 'taxonomy' => array( 'professie', 'locaties' ), 'hide_empty' => false, 'orderby' => 'term_id') ) );
echo '<div class="shrink columns">Filter</div>';
$team_member_profs = get_terms( array( 'taxonomy' => 'professie', 'hide_empty' => true ) );
$team_member_locs = get_terms( array( 'taxonomy' => 'locaties', 'hide_empty' => true ) );
//var_dump($team_member_terms);
foreach ($team_member_profs as $team_member_term) {
echo '<div class="shrink columns"><button type="submit" name="prof" form="custom_form" value="' . $team_member_term->slug . '" class="button primary hollow">' . $team_member_term->name . '</button></div>';
}
foreach ($team_member_locs as $team_member_term) {
echo '<div class="shrink columns"><button type="submit" name="loc" form="custom_form" value="' . $team_member_term->slug . '" class="button primary hollow">' . $team_member_term->name . '</button></div>';
} ?>
</div>
<?php endwhile;
wp_reset_query();
wp_reset_postdata(); ?>
</form>
我需要缩短的查询:
if ( isset( $_GET['prof'] ) ) {
$filter = $_GET['prof'];
$filter_term = 'professie';
$args = array(
'post_type' => 'medewerker',
'tax_query' => array(
array(
'taxonomy' => 'professie',
'field' => 'slug',
'terms' => $filter
)
)
);
} elseif ( isset( $_GET['loc'] ) ) {
$filter = $_GET['loc'];
$filter_term = 'locaties';
$args = array(
'post_type' => 'medewerker',
'tax_query' => array(
array(
'taxonomy' => 'locaties',
'field' => 'slug',
'terms' => $filter
)
)
);
} else {
$args = array( 'post_type' => 'medewerker' );
$filter = '';
}
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) :
?>
答案 0 :(得分:2)
以下是更短的代码:
$filter = '';
$filter_term = '';
$args = array('post_type' => 'medewerker');
switch ($_SERVER['QUERY_STRING']) {
case 'prof':
$filter = $_GET['prof'];
$filter_term = 'professie';
break;
case 'loc' :
$filter = $_GET['loc'];
$filter_term = 'locaties';
break;
}
if ($filter != '') {
$args['taxonomy'] = array(
array(
'taxonomy' => $filter_term,
'field' => 'slug',
'terms' => $filter
)
);
}
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) :
答案 1 :(得分:0)
您可以切换:
switch ($_SERVER['QUERY_STRING']) {
case 'prof':
$filter = $_GET['prof'];
$filter_term = 'professie';
$args = array(
'post_type' => 'medewerker',
'tax_query' => array(
array(
'taxonomy' => 'professie',
'field' => 'slug',
'terms' => $filter
)
)
);
break;
case 'loc' :
$filter = $_GET['loc'];
$filter_term = 'locaties';
$args = array(
'post_type' => 'medewerker',
'tax_query' => array(
array(
'taxonomy' => 'locaties',
'field' => 'slug',
'terms' => $filter
)
)
);
default:
$args = array( 'post_type' => 'medewerker' );
$filter = '';
break;
}
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) :