반응형
리피터 필드 값의 wp_meta_meta
커스텀 필드가 있는 워드 프레스 사이트를 가지고 있습니다.테이블로서 리피터필드를 조회해야 합니다.다음과 같습니다.
| param_1 | param_2 | param_2 | param_4
| 20 | 20 | 20 | 20
| 555 | 680 | 56 | 0
| 5555 | 45 | 56 | 1
| 69 | 0 | 45 | 0
같은 줄의 쿼리와 일치하는 경우에만 결과를 얻으려면 이 리피터를 쿼리해야 합니다.
메타 쿼리는 다음과 같습니다.
[post_type] => product
[posts_per_page] => -1
[orderby] => title
[order] => ASC
[meta_query] => Array (
[relation] => AND
[0] => Array (
[key] => BBBproduct_params_values_AAA_param_value_0
[value] => 25
[compare] => <=
[type] => NUMERIC
)
[1] => Array (
[key] => BBBproduct_params_values_AAA_param_value_1
[value] => 56
[compare] => >=
[type] => NUMERIC
)
[2] => Array (
[key] => BBBproduct_params_values_AAA_param_value_2
[value] => 56
[compare] => >=
[type] => NUMERIC
)
[3] => Array (
[key] => BBBproduct_params_values_AAA_param_value_3
[value] => 0
[compare] => =
[type] => NUMERIC
)
)
이 코드를 통해 생성됩니다.
if( $product_search_by_param_active ){
function my_posts_where( $where ){
$where = str_replace("AAA_param_value_", "%_param_value_", $where);
$where = str_replace("meta_key = 'BBBproduct_params_values_", "meta_key LIKE 'product_params_values_", $where);
return $where;
}
add_filter('posts_where', 'my_posts_where');
$range_angine_settings = get_field('param_search_range_settings');
$search_args['meta_query'] = array();
$search_args['meta_query'] ['relation'] = 'AND';
foreach( $range_angine_settings as $rangekey => $search_range ){
${'range-'.$rangekey} = $_GET['range-'.$rangekey]? $_GET['range-'.$rangekey] : '0';
if ( $_GET['range-'.$rangekey] ) $has_range_query = true;
//$pre_prama_value = 'product_params_values_'.strval($rangekey).'_param_value_AAA';
if( isset($_GET['range-'.$rangekey])){
$search_args['meta_query'][] = array(
"key" => 'BBBproduct_params_values_AAA_param_value_'.strval($rangekey),
"value" => $search_range['search_metric_ranges'][${'range-'.$rangekey}]['range_value'],
"compare" => $search_range['product_search_logic'],
'type' => 'NUMERIC'
);
}
}
}
문제는 '%' 때문에 쿼리가 같은 줄에 일치하지 않아도 결과가 나온다는 것입니다.
위의 예에서는 결과를 얻을 수 없지만, 모든 조건이 다른 라인에서 충족되기 때문에 결과를 얻을 수 있습니다.
이 쿼리 킹을 생성하여 줄 번호별로 결과를 제공하는 방법이 있습니까?
커스텀 필드에는 CMB2를 사용하는 것이 좋습니다.https://github.com/CMB2/CMB2
언급URL : https://stackoverflow.com/questions/59480994/wp-query-and-meta-query-for-repeater-field-values
반응형
'programing' 카테고리의 다른 글
각도가 $140입니다.날짜를 UTC 날짜로 변경 후 (0) | 2023.03.11 |
---|---|
TypeScript 오류 http.get(...).map이 [null]의 함수가 아닙니다. (0) | 2023.03.11 |
왜 XMLHttpRequest라고 부릅니까? (0) | 2023.03.11 |
Woocommerce에서 적용된 할인 쿠폰을 프로그래밍 방식으로 제거하는 방법은 무엇입니까? (0) | 2023.03.11 |
템플릿 없이 Django에서 빈 응답을 보내려면 어떻게 해야 합니까? (0) | 2023.03.11 |