1

カスタムフィールドで検索結果をフィルタリングしたい

カスタムフィールドcp_cityがあり、ユーザーが結果を都市でフィルタリングするようにしたいので、検索ボックスの横に都市ドロップダウンを追加し、クエリを変更して結果を変更しましたが、何らかの理由で機能しません。

これが私が試したことです

            <?php
        $city = isset($_GET['city']) ? trim($_GET['city']) : '';
        $s = $_GET['s'];

        $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
        query_posts( array('s' => $s, 'scat' => $scat, 'post_type' => 'ads', 'ignore_sticky_posts' => 1, 'meta_key' => 'cp_state', 'meta_value' => $city, 'meta_compare' => 'LIKE', 'paged' => $paged, 'orderby' => 'rand') );
        ?>

私も試しました

function SearchFilter($query) {
if ($query->is_search) {
    $query->set('meta_key','cp_state');
$query->set('meta_value','london');
}
return $query;
}

add_filter('pre_get_posts','SearchFilter');

しかし、両方の試みは失敗しました。誰でも正しい解決策を見つけられますか?

4

1 に答える 1

1

次のようにする必要があります。

<?php
$city = isset($_GET['city']) ? trim($_GET['city']) : '';
$s = $_GET['s'];

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
query_posts( 
    array(
        's' => $s, 
        'scat' => $scat, 
        'post_type' => 'ads', 
        'ignore_sticky_posts' => 1, 
        'meta_query' = > array(
            'key' => 'cp_city', 
            'value' => $city, 
            'compare' => 'LIKE' 
        ),
        'paged' => $paged, 
        'orderby' => 'rand') 
    );

?>

于 2012-12-17T14:53:51.150 に答える