カスタム投稿タイプFilm
、リピーターフィールドShowings
、フィールドstart_datetime
およびdiscount
があるとします。
来週中に少なくとも1つの上映があり、(この上映)また割引がある映画について問い合わせをする必要があります。
私が今持っている質問は、来週中に少なくとも1つの上映と割引で少なくとも1つの上映(たぶん他のもの)で映画を検索します。これら2つの上映が同じであることを確認しません!
私の質問:
$args = array(
'numberposts' => -1,
'post_type' => 'film',
'meta_key' => 'showings_%_start_datetime',
'meta_value' => array( time(), strtotime('+1week') ),
'meta_type' => 'NUMERIC',
'meta_compare' => 'BETWEEN',
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'showings_%_discount',
'value' => 'students',
'type' => 'CHAR',
'compare' => '='
)
)
);
生成されたSQLクエリをチェックしていますが、リピータフィールドであるため、表示には適切なIDがないため、meta_key内の数字がshowings_5_start_datetime
やshowings_5_discount
のように同じです。
何かアイデアはありますか?
私はこれが古い質問であることを知っています、しかし私は他の誰かが同じ問題に直面しているならば私が答えを掲示することになっていると思いました。
functions.php:
function add_cond_to_where( $where ) {
//Replace showings_$ with repeater_slug_$
$where = str_replace("meta_key = 'showings_$", "meta_key LIKE 'showings_%", $where);
return $where;
}
add_filter('posts_where', 'add_cond_to_where');
クエリ:
//Replace showings_$ with repeater_slug_$
//Replace _discounts with _sub_element_slug
$args = array(
'meta_query' => array(
array(
'key' => 'showings_$_discount',
'value' => 'students',
'compare' => '='
)
)
);
参照: https://www.advancedcustomfields.com/resources/query-posts-custom-fields
これが役立つことを願っています、
乾杯!