1

wordpress のメタ キー関係と検索パラメータに問題があります。これを機能させることができません:

?meta_value=Dažādi&id=32&cp_city=Cēsis

検索結果は、cp_city と meta_value ではなく、meta_value でのみフィルタリングされます。

cp_city もメタ キー値です。

しかし、この呼び出しは機能しており、フィルタリングしています:

?meta_value=Pārdod&id=32

2 つまたは 3 つのパラメータでフィルタリングする必要があります。

フィルタリングする関数コードを次に示します。

<?php

if (empty($pilseta)) {
     $args=array(
    'post_type'          => 'ad_listing',
    'post_status'        => 'publish',
    'meta_key'           => 'cp_tips',
    'meta_value'         => $meta,
    'paged'              => $paged,
    'tax_query'          => array(
        array(
            'taxonomy' => 'ad_cat',
            'terms' => $cat_id,      
            'field' => 'id'
        )
    )
);
}
else {
    $args=array(

    'post_type'          => 'ad_listing',
    'post_status'        => 'publish',
    'meta_query' => array(
        array(
            'meta_key'           => 'cp_tips',
            'meta_value'         => $meta
        ),
         array(
            'meta_key'           => 'cp_city',
            'meta_value'         => $pilseta
        ),
    ),
    'paged'              => $paged,
    'tax_query'          => array(
        array(
            'taxonomy' => 'ad_cat',
            'terms' => $cat_id,      
            'field' => 'id'
        )
    )
);
}



query_posts($args);

?>

4

2 に答える 2

1

大丈夫かどうかを知るために、Wordpress によって生成された SQL クエリを見ましたか?

query_posts 呼び出しの後、これを置きます:

<?php global $wpdb; echo $wpdb->last_query; ?>

WP が予期しないクエリを作成している場合、query_posts の代わりに get_posts でposts_whereフィルターを使用することをお勧めします

于 2012-06-08T22:41:11.943 に答える
0

以下のmeta_keyargsファイルを変更して、次のことを試してください。

'meta_query' => array(
        array(
            'key' => 'cp_tips',
            'value'=> $meta
        ),
         array(
            'key'=> 'cp_city',
            'value'=> $pilseta
)
于 2012-06-27T19:53:51.007 に答える