组合数组

时间:2017-06-12 13:30:23

标签: php arrays wordpress

我正在为一个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() ) : 



?>

2 个答案:

答案 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() ) :