私は現在、すべての検索オプションが一致していない場合でも、最小限の結果に基づいて検索クエリを作成するソリューションを検討しています。WP_query最小掲載結果
理想的な状況。
私はカスタムポストタイプを作って、色とサイズの異なる2つの靴を追加しました。 WP_Query()で「青い靴」と「サイズ8」を照会しています。私がこのクエリを実行すると、私はサイズ8の青色の靴が3点しか得られません。今度は、サイズ8の靴を7個追加して合計10個の靴を得たいと思います。
アドバンスドカスタムフィールドと組み合わせてWordpress内でこれを行う方法はありますか?
WP_query()メソッドに基づいてカスタムWP_Queryを作成しました。最初のクエリに基づいてすべての結果を格納する配列を作成し、その配列の長さが10に等しくない場合、追加のクエリを実行します。
これまでのところは良いが、その後、私は重複して結果を取得:
を=>私はすべてのサイズ8つの靴はすでにを含む3すでに見つかっ青色の靴のサイズが8で、そして再び2番目のクエリで取得最初のクエリの靴が見つかりました。
下記のコードを参照してください。
$shoe_array = array();
$args = array(
'numberposts' => -1,
'post_type' => 'my_shoes',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'size',
'value' => 8,
'compare' => 'LIKE'
),
array(
'key' => 'color',
'value' => 'blue',
'compare' => 'LIKE'
),
),
'orderby' => 'date',
'order' => 'DESC'
);
$shoes = new WP_Query($args);
$posts = $shoes->posts;
foreach($posts as $post) {
array_push($shoe_array, $post->post_name);
}
if (count($shoe_array) > 9) {
echo 'Result of found shoes: ';
print_r($shoe_array);
} else {
$args = array(
'numberposts' => -1,
'post_type' => 'my_shoes',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'size',
'value' => 8,
'compare' => 'LIKE'
)
),
'orderby' => 'date',
'order' => 'DESC'
);
$extra_shoes = new WP_Query($args);
$posts = $extra_shoes->posts;
foreach($posts as $post) {
array_push($shoe_array, $post->post_name);
}
echo 'Result of found shoes: ';
print_r($shoe_array);
}
誰もが「よりスマートに」クエリを作成する方法を知っていますか?
必要に応じて質問がありましたらお気軽にお問い合わせください。ありがとう! :-)
私はそのコードはあなたを助けることを願って
青ではありません、私はあなたが結合結果を望んでいることを理解3つの実績+他の7つの結果は、あなたが望むものですか? – SouhailV
@SouhailVはい、それはまさに私が達成したいことです。他の結果は、「ほぼ同じ」なので、この場合はメタ値「青」がありません。 – 0611nl