Использование поля флажка ACF в настраиваемом типе записи для фильтрации результатов другого настраиваемого типа записи - PullRequest
3 голосов
/ 03 июля 2019

У меня есть одна страница, которая проходит по кругу (пользовательский тип сообщения 1).Вложенный внутри (пользовательский тип сообщения 1) У меня есть еще один цикл для (пользовательский тип сообщения 2).Цель состоит в том, чтобы установить флажок ACF в (настраиваемый тип записи 1), который фильтрует результаты для (настраиваемого типа записи 2) на основе того, что отмечено (настраиваемый тип записи 1).

Я новичок вРазработка StackOverflow и Wordpress.Но у меня все работает так, как я описал выше, с одним отступлением.Для работы $ meta_query у вас должны быть доступны флажки (пользовательский тип записи 2).Совершенно понятно, почему после прочтения документации и как у меня эта настройка.

Как бы мне было сделать так, чтобы (настраиваемый тип записи 2) не нуждался в флажках для фильтрации, работающей на основе (настраиваемый тип записи 1), отмеченных флажками?

<?php
// Custom Post Type 1
$args1 = array(
    'post_type' => 'custom_post_type_1',
    'posts_per_page' => -1,
);
$custom_post_type_1 = get_posts( $args1 );

foreach( $custom_post_type_1 as $post ) : setup_postdata( $post );
    // Do things

    // Get the selected options from custom post type 1 and throw them into an array                         
    $my_acf_checkbox = get_field('checkbox', $post->ID);
    $meta_query = array('relation' => 'OR');
    foreach( $my_acf_checkbox as $item ){
        $meta_query[] = array(
        'key' => 'checkbox',
        'value' => $item,
        'compare' => 'LIKE',
    );
    }

    // Custom Post Type 2 (Nested)
    $args2 = array(                                      
        'post_type' => 'custom_post_type_2',                                         
        'posts_per_page' => -1,
        'meta_query' => $meta_query
    );                                   
    $custom_post_type_2 = get_posts( $args2 );

    foreach( $custom_post_type_2 as $post ) : setup_postdata( $post );
        // Do things                                     
        wp_reset_postdata();                                     
    endforeach;

    wp_reset_postdata();
endforeach;                             
?>

1 Ответ

0 голосов
/ 04 июля 2019

Мне просто интересно, почему вы используете поле ACF-флажок?Какие значения возвращаются?Почтовые идентификаторы, Слизни?Я бы обычно использовал поле Post Object и возвращал идентификатор, чтобы он был немного более динамичным, чем жесткое кодирование значений в поле флажка.

Я предположил, что вы возвращаете post_ids в своем флажке для решения ниже.

Я вижу, что вы пытаетесь сделать, используя meta_query, но если у вас есть идентификаторы, вы можете просто использовать post__in в вашем $ args2 для второго цикла, поэтому вместо этого:

$my_acf_checkbox = get_field('checkbox', $post->ID);
$meta_query = array('relation' => 'OR');
    foreach( $my_acf_checkbox as $item ){
    $meta_query[] = array(
        'key' => 'checkbox',
        'value' => $item,
        'compare' => 'LIKE',
    );
}

Простовставьте свои идентификаторы в массив самостоятельно, вот так:

foreach( $my_acf_checkbox as $item ){
    $cpt2s[] = $item;
}

Затем используйте ваш новый массив в post__in $ args2:

$args2 = array(                                      
    'post_type' => 'custom_post_type_2',                                         
    'posts_per_page' => -1,
    'post__in' => $cpt2s
);

Дайте мне знать, будет ли это работать какрешение для вас, или если что-то не имеет смысла.

...