posting – Filter tidak berfungsi bila ada banyak (satu berfungsi)

Saya memiliki kode functions.php ini:

function my_query($query)
{
    if (is_post_type_archive('mycustomposttype') && $query->is_main_query()) {
        $orderby = sanitize_text_field(get_query_var('orderby'));
        $orderby2 = sanitize_text_field(get_query_var('orderby2'));
        $tax_query = array();
        $tax_query2 = array();
        
        if ($orderby !== 'all') {
            $tax_query[] = array(
                'taxonomy' => 'category',
                'field' => 'slug',
                'terms' => $orderby,
            );
        }
        if ($orderby2 !== 'all2') {
            $tax_query2[] = array(
                'taxonomy' => 'category',
                'field' => 'slug',
                'terms' => $orderby2,
            );
        }
        $query->set('tax_query', array_merge($tax_query, $tax_query2));
    }
}

Dan saya memiliki filter ini di halaman arsip saya:

<form method='GET' id="filter-form">
    <label>Filters</label>
    <select name="orderby" id='orderby' onchange="document.getElementById('filter-form').submit()">
        <option value="all" selected>All</option>
        <?php
            $terms = get_terms([
                'taxonomy' => 'category',
                'hide_empty' => 'false',
                'exclude' => array('53','1', '72')
            ]);
            foreach ($terms as $term) :
        ?>

        <option value="<?php echo $term->slug; ?>" <?php echo selected(sanitize_text_field($_GET['orderby']), $term->slug); ?>><?php echo $term->name; ?></option>
        <?php endforeach; ?>
    </select>
    <select name="orderby2" id='orderby2' onchange="document.getElementById('filter-form').submit()">
        <option value="all2" selected>All2</option>
        <?php
            $terms2 = get_terms([
                'taxonomy' => 'category',
                'hide_empty' => 'false',
                'include' => array('72')
            ]);
            foreach ($terms2 as $term2) :
        ?>
        <option value="<?php echo $term2->slug; ?>" <?php echo selected(sanitize_text_field($_GET['orderby2']), $term2->slug); ?>><?php echo $term2->name; ?></option>
        <?php endforeach; ?>
    </select>
</form>

Tujuan saya: memastikan kedua filter berfungsi, terpisah satu sama lain (atau setidaknya: keduanya berfungsi dengan baik). Saat ini, ketika saya menambahkan pilihan kedua seperti yang saya lakukan pada kode, kode tersebut gagal. Kedua filter gagal. Jika saya hanya menggunakan satu filter pilihan, itu berfungsi .. tapi saya membutuhkan keduanya di dropdown terpisah.

Bagaimana saya bisa mencapai itu? Adakah yang bisa membantu?

Leave a Reply

Your email address will not be published. Required fields are marked *