在Wordpress中按类别和自定义字段搜索

时间:2019-03-05 20:56:43

标签: search categories

我需要一些帮助来了解搜索查询在wordpress中的工作方式。 我为地区建立了一个metabox。每个帖子都与一个地区相关。 然后,我用两个选择的下拉菜单,地区和类别下拉菜单(使用wp_dropdown_category函数)构建搜索表单

<form method="get" id="advanced-searchform" role="search" class="flex" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <input type="hidden" name="s" value="">
    <div class="form-group">
        <div class="form-select">
            <?php
            echo'<div><fieldset>';
        echo '<label for="arrondissement">Définir un arrondissement</label><br/>';
        echo '<select name="arrondissement">';
        echo '<option ' . selected( '1er arrondissement', $arrondissement, false ) . ' value="1er arrondissement">1er arrondissement</option>';
        echo '<option ' . selected( '2ème arrondissement', $arrondissement, false ) . ' value="2ème arrondissement">2ème arrondissement</option>';
        echo '<option ' . selected( '3ème arrondissement', $arrondissement, false ) . ' value="3ème arrondissement">3ème arrondissement</option>';
        echo '<option ' . selected( '4ème arrondissement', $arrondissement, false ) . ' value="4ème arrondissement">4ème arrondissement</option>';
        echo '<option ' . selected( '5ème arrondissement', $arrondissement, false ) . ' value="5ème arrondissement">5ème arrondissement</option>';
        echo '<option ' . selected( '6ème arrondissement', $arrondissement, false ) . ' value="6ème arrondissement">6ème arrondissemen</option>';
        echo '<option ' . selected( '7ème arrondissement', $arrondissement, false ) . ' value="7ème arrondissement">7ème arrondissement</option>';
        echo '<option ' . selected( '8ème arrondissement', $arrondissement, false ) . ' value="8ème arrondissement">8ème arrondissement</option>';
        echo '<option ' . selected( '9ème arrondissement', $arrondissement, false ) . ' value="9ème arrondissement">9ème arrondissement</option>';
        echo '<option ' . selected( '10ème arrondissement', $arrondissement, false ) . ' value="10ème arrondissement">10ème arrondissement</option>';
        echo '<option ' . selected( '11ème arrondissement', $arrondissement, false ) . ' value="11ème arrondissement">11ème arrondissement</option>';
        echo '<option ' . selected( '12ème arrondissement', $arrondissement, false ) . ' value="12ème arrondissement">12ème arrondissement</option>';
        echo '<option ' . selected( '13ème arrondissement', $arrondissement, false ) . ' value="13ème arrondissement">13ème arrondissement</option>';
        echo '<option ' . selected( '14ème arrondissement', $arrondissement, false ) . ' value="14ème arrondissement">14ème arrondissement</option>';
        echo '<option ' . selected( '15ème arrondissement', $arrondissement, false ) . ' value="15ème arrondissement">15ème arrondissement</option>';
        echo '<option ' . selected( '16ème arrondissement', $arrondissement, false ) . ' value="16ème arrondissement">16ème arrondissement</option>';
        echo '<option ' . selected( '17ème arrondissement', $arrondissement, false ) . ' value="17ème arrondissement">17ème arrondissement</option>';
        echo '<option ' . selected( '18ème arrondissement', $arrondissement, false ) . ' value="18ème arrondissement">18ème arrondissement</option>';
        echo '<option ' . selected( '19ème arrondissement', $arrondissement, false ) . ' value="19ème arrondissement">19ème arrondissement</option>';
        echo '<option ' . selected( '20ème arrondissement', $arrondissement, false ) . ' value="20ème arrondissement">20ème arrondissement</option>';
        echo '</select>';
        echo '</fieldset></div>';
       ?>
        </div>
    </div>
    <div class="form-group">
        <div class="form-select select-type">
            <?php 
            echo '<select name="categories">';
            // Add custom option as default
            echo '<option>' . __('No Category', 'text-domain') . '</option>';

            // Get categories as array
            $categories = get_categories( $args );
            foreach ( $categories as $category ) :

            // Check if current term ID is equal to term ID stored in database
            $selected = ( $stored_category_id ==  $category->term_id  ) ? 'selected' : '';

            echo '<option value="' . $category->term_id . '" ' . $selected . '>' . $category->name . '</option>';

            endforeach;

            echo '</select>'; ?>
        </div>
    </div>

<button type="submit" id="searchsubmit" value="Search" />    <i class="fas fa-search"></i></button>

现在,我需要根据用户的选择(区域和类别)显示搜索结果。我真的不知道如何使它工作。我读的所有主题都是关于通过WP_Query进行循环,我知道我必须将meta_query与tax_query融为一体。  在我的搜索结果页中,我有类似的内容,但始终不返回任何内容。

    <?php   

    $arr = $_GET['arrondissement'];
    $args = array(
    'fields' => 'ids',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',

        ),
    ),
    'meta_query' => array(
        array(
            'key'     => 'arrondissement',
            'value'   => $arr,
            'compare' => '=',
        ),
    ),
);

    $query = new WP_Query( $args );?>

我的网址是这样的:?s =&arrondissement =4ème+ arrondissement&categories = 6 我在做什么错了?

0 个答案:

没有答案