programing

리피터 필드에 의한 ACF 쿼리 투고가 비어 있지 않음

muds 2023. 3. 2. 22:42
반응형

리피터 필드에 의한 ACF 쿼리 투고가 비어 있지 않음

이 질문은 인터넷에서는 대답할 수 없는 것 같습니다.리피터 필드에 행이 있는 모든 게시물을 쿼리합니다.

$args = array(
'meta_query'        => array(
'relation' => 'AND',
    array(
        'key'       => 'repeater_field',
        'value'     => '',
        'compare'   => '=!'
    )
);

루프 내의 스테이트먼트를 필터링 하기 위해 스테이트먼트를 실행하는 것이 대체 방법이라는 것은 알고 있습니다만, 그것은 쿼리의 투고수에 근거하는 다른 로직과 혼동됩니다.

이것에 대해 생각나는 사람 있나요?

My Repeater Field라는 라벨이 붙은 리피터 필드가 있고 이 리피터에는 A Field라는 라벨이 붙은 필드가 적어도1개 포함되어 있다고 합니다.

디폴트가 있다고 가정합니다.wp_테이블 접두사, DB를 확인해야 합니다.wp_postmeta리피터 상의 이 필드의 값이 에 저장되어 있는 것을 알 수 있습니다.meta_key:

이름_OF_THE_REPEATER_index_NAME_OF_필드 ON_THE_리피터

따라서 이 경우 포스트가 리피터 필드에 3줄이면 해당 값은 다음과 같이 저장됩니다.

my_repeater_field_0_a_field_on_the_repeater
my_repeater_field_1_a_field_on_the_repeater
my_repeater_field_2_a_field_on_the_repeater

리피터 상에 적어도1개의 행이 있는 모든 투고를 조회하는 경우는, 다음의 조작할 수 있습니다.

$meta_query = [
    [
        'key'     => 'my_repeater_field_0_a_field_on_the_repeater',
        'compare' => 'EXISTS',
    ]
];

$args = [
    'posts_per_page'   => -1,
    'orderby'          => 'date',
    'order'            => 'DESC',
    'meta_query'       => $meta_query,
    'post_type'        => 'post',
    'post_status'      => 'publish',
];

$posts_array = get_posts( $args );

주의: WP Docs에 기재되어 있는 바와 같이 사용할 수 있는 것은EXISTSWP > = 3.5에서의 비교이며 'EX'를 사용할 때 값을 지정할 필요가 없습니다.WordPress 3.9 이상에서 ICTS' 또는 '존재하지 않음' 비교.또한 짧은 배열 구문을 사용할 수 있도록 PHP > = 5.4를 사용하고 있다고 가정합니다.그렇지 않은 경우 교체만 하면 됩니다.[]위해서array().

$wpdb 개체를 사용하여 워드프레스 데이터베이스를 쿼리할 수 있습니다.ACF 필드는 데이터베이스의 prod_postmeta에 저장되므로 쿼리를 실행할 수 있습니다.meta_value는 리피터 필드의 키가 되므로 아래 쿼리에서 반드시 치환하십시오.모든 ACF 필드의 키는 field_로 시작하여 랜덤한 문자/자릿수로 시작합니다.다음은 다음과 같습니다.그런 다음 post ID를 얻으면 이러한 post ID에서 get_post()를 실행할 수 있습니다.더 필요하거나 궁금한 점이 있으시면 말씀하세요.

global $wpdb;
$results = $wpdb->get_results("SELECT post_id from prod_postmeta WHERE meta_value = 'field_534eeaaa74199'");
$echo $results;

이거 되는구나.시험해 봐야지."Welcome World" 게시물에서만 작동되지 않습니다.

$args = array(
    'post_type'=> 'post', 
    'posts_per_page' => -1,
    'meta_query'        => array(
        'relation' => 'AND',
        array(
            'key'       => 'repeater_field',
            'value'     => '0',
            'compare'   => '!='
        )
));
$the_query = new WP_Query( $args );

"repeater_field"는 필드 이름이며 field_key가 아닙니다.행의 개수는 다음과 같습니다.

언급URL : https://stackoverflow.com/questions/40027655/acf-query-posts-by-repeater-field-not-empty

반응형