php – Batasi kotak pencarian dengan taksonomi CPT +, hanya dalam satu halaman

Saya memiliki halaman tertentu, di mana saya ingin kotak pencarian hanya menampilkan CPT sebagai hasilnya. Tapi saya juga ingin mencari, sebagai istilah input, untuk judul posting, dan dua taksonomi khusus yang ditetapkan untuk CPT ini. Saya mencoba beberapa versi kode yang diperkecil yang berfungsi, tetapi tidak pernah sepenuhnya.

Halaman adalah ‘Profesional’, CPT ‘profesional’ dan taksonomi ‘wilayah’ dan ‘kota’.

Yang ini berfungsi sempurna, tetapi di seluruh situs:

add_filter('pre_get_posts', 'filter_search_cpt_prof');
function filter_search_cpt_prof($query)
{
    if( $query->is_search ) $query->set('post_type', 'profissional');

    return $query;
}

Tetapi ketika saya mencoba sesuatu seperti ini, itu tidak berhasil sama sekali:

add_filter('pre_get_posts', 'filter_search_cpt_prof');
function filter_search_cpt_prof($query)
{
    if( $query->is_search() && $query->is_main_query() && is_page('profissionais') ) {
        $query->set('post_type', 'profissional');
    }
    return $query;
}

Dan tentu saja, bukan ini juga:

add_filter('pre_get_posts', 'filter_search_cpt_prof');
function filter_search_cpt_prof($query)
{
    if ($query->is_search) {
        $query->set('post_type', array('profissional'));
        $tax_query = array(
            'relation' => 'OR',
            array(
                'taxonomy' => 'regiao',
                'field' => 'name',
                'terms' => $query->query_vars['s'],
            ),
            array(
                'taxonomy' => 'cidade',
                'field' => 'name',
                'terms' => $query->query_vars['s'],
            ),
        );
        $query->set('tax_query', $tax_query);
    }

    return $query;
}

Saya telah menghabiskan waktu berjam-jam dalam hal ini… Adakah yang bisa membantu?

Leave a Reply

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