php - 组合数组

标签 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() ) : 



?>

最佳答案

这是稍微短一点的代码:

$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() ) :

关于php - 组合数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44500722/

相关文章:

php - 如何在 PHP 中使用 activex dll?

PHP : how to allow only registered users to go to another page

css - divi 主题标题中的响应中心文本

mysql - 尽管使用 DISTINCT,但 Wordpress Mysql wpdb 查询重复

php - 从 id 中检索用户信息

php - 无法使用 XMPPHP 库在我的应用服务器和 GCM 的 CCS 之间建立 xmpp 连接

超出 Java GC 开销限制 - 需要自定义解决方案

php - PDO 中 mysqli_fetch_array 函数的确切等价物是什么?

arrays - symfony 渲染 json_array 实体类型并使用表单保存

mysql - 如何根据联接表值选择 "fake"列/值?