Как отфильтровать пользовательские записи по флажку «Дополнительные пользовательские поля» - PullRequest
0 голосов
/ 03 мая 2018

Я создаю сайт недвижимости, на котором есть главная недвижимость на главной странице. Чтобы определить свойство как выбранное, я создал флажок acf со значением «Да», когда установлен флажок. Я попытался отфильтровать сообщения, проверив, установлен ли флажок, но я не могу понять это. Вот мой код, который не работает;

<?php 
    $args = array(
        'post_type'         => 'property',
        'posts_per_page'    => 1,
        'meta_key'          => 'featured_property',
        'meta_value'        => 'Yes'
    );

    $query = new WP_Query( $args );
?>

<?php if( $query->have_posts() ) : ?>
    <?php  
        $main_field = get_field('images');
        $first_row = $main_field[0];
        $img = $first_row['image'];
        $img_crop = $img['sizes']['fresh_size'];
    ?>

    <img src="<?php echo $img_crop; ?>" alt="featuredproperty" class="img-fluid">
    <?php wp_reset_postdata(); ?>
<?php endif; ?>

enter image description here

ПРОЧИТАЙТЕ ЭТО: для тех, кто пытается сделать это с флажком, как я не сделал. после небольшого исследования я выяснил, что «Флажки хранятся как сериализованные данные, и вы не сможете использовать WP_Query для фильтрации по полю« Флажок »вместо этого. Используйте вместо этого true / false и проверьте, равно ли значение« 1 »или« 2 ». «В зависимости от того, что вы пытаетесь достичь.

https://support.advancedcustomfields.com/forums/topic/using-checkbox-fields-in-custom-queries/

Ответы [ 2 ]

0 голосов
/ 03 мая 2018
<?php 
$args = array(
    'post_type'         => 'property',
    'posts_per_page'    => 1,
    'meta_key'          => 'featured_property',
    'meta_value'        => 'Yes'
);

$query = new WP_Query( $args );
?>

<?php if( $query->have_posts() ): ?>
<ul>
<?php while( $query->have_posts() ) : $query->the_post();
   $images = get_field('images');
    $first_row = $main_field[0];
    $img = $first_row['image'];
    $img_crop = $img['sizes']['fresh_size'];
?>
    <img src="<?php echo $img_crop; ?>" alt="featuredproperty" class="img-fluid">
<?php endwhile; ?>
</ul>
<?php endif; ?>

<?php wp_reset_query();  // Restore global post data stomped by the_post(). 
?>

Пожалуйста, проверьте ваши настройки под флажком acf «Выбор», проверьте, если это «Да: Да» или «Да: Да» и исправьте «meta_value», если у вас есть «да: Да» в «meta_value» => 'да ». Флажок сохраняет данные как метку значения. Я думаю, что у вас есть проблемы с вашей конфигурацией флажок.

Какой тип поля «изображения» вы используете? Это ретранслятор или галерея? Если вы используете галерею, то для src изображения вам нужно использовать: $ images = get_field ('images'); $ img_crop = $ images [0] ['sizes'] ['fresh_size'];

0 голосов
/ 03 мая 2018

Удалить эту часть:

'meta_key'          => 'featured_property',
'meta_value'        => 'Yes'

Вместо этого отфильтруйте, у кого установлен флажок внутри цикла. Вам также не хватает частей цикла. Попробуйте этот код:

    <?php if( $query->have_posts() ) : ?>
        (...)

        <!-- start of the loop -->
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
              <?php if( get_field('featured_property') ) { // << FROM HERE ?>
                  <img src="<?php echo $img_crop; ?>" alt="featuredproperty" class="img-fluid">
              <?php } // << TO HERE ?>
        <?php endwhile; ?><!-- end of the loop -->

        <?php wp_reset_postdata(); ?>
    <?php endif; ?>

Я вырезал первую часть вашего кода, чтобы его было легче читать.

-

Или, если вы хотите вместо этого использовать meta_key, попробуйте добавить:

'compare' => 'EXISTS'
...