私はその質問がかなりあいまいであることを知っています。説明させてください:
特定の値のカスタムフィールドを持つすべての投稿を一覧表示するページがあります。 (例:Rentals
ページには、カスタムフィールドoffer_type
の値rental
を持つすべての投稿が一覧表示されます)。
特定の値のcity
カスタムフィールドを持つ投稿のみが表示されるように、都市別のフィルタリングオプションを追加します。このために、カスタムクエリを作成するget
メソッドを使用してフォームを作成しました(私の例では、 'offer_type'と 'city'という2つのカスタムフィールドがあります)。
必要なものは、投稿のすべての都市(city
カスタムフィールドの値)をrental
の値offer_type
で一覧表示する方法です。各都市は一度リストされなければなりません。
このコードを試してみました(すべてのフォームをまとめて表示しています)。
$metakey = 'city';
$cities = $wpdb->get_col($wpdb->prepare("SELECT DISTINCT meta_value
FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey) );
if ($cities) {
foreach ( $cities as $city ) {
echo $city;
}
}
しかし、これはすべての投稿に対するcity
カスタムフィールドのすべての値を一覧表示します(したがって、たとえばrental
と異なる値のoffer_type
を持つ投稿がある場合、そのカスタムフィールドの値city
はカスタムリストに表示されます)。
私は問題がSQLクエリとテーブルの結合を中心に展開していることを知っていますが、私は本当にこの問題を解決するためのスキルを欠いています。
助けてください!
wP_Queryクラスの参照ドキュメントを見てください。 http://codex.wordpress.org/Class_Reference/WP_Query
このようなもの:
$args = array(
//some key/value pairs...whatever
'meta_query => array(
array(
'key' => somekey,
'value' => somevalue,
'compare' => some comparison operator
),
array(
'key' => some other key,
'value' => some other value,
'compare' => some comparison operator
)
)
)
$my_query = new WP_Query( $args );
//some code to do something with the results of the query
これはあなたの質問に対する直接的な答えではありませんが、作業の参考として使用するコードの行です。
これは私が私のテーブルを通して検索するのに使用しているもののコピーです、私はデータ範囲の間で検索し、それから入力されたusr_idのインスタンスのみを表示するように制限します
$this->items = $wpdb->get_results($wpdb->prepare("SELECT * FROM $table_name WHERE `datec` BETWEEN CAST('$start_date' AS DATE) AND CAST('$end_date' AS DATE) AND `usr_id`= $usr_id"), ARRAY_A);
お役に立てれば :)