仅循环浏览已填充自定义字段的帖子

时间:2019-08-01 13:55:09

标签: php wordpress advanced-custom-fields

我有一个带有多个自定义字段的自定义帖子类型“团队”。我要创建一个简短代码,以在帖子具有该自定义字段的图片集时显示“ team_foto_met_koptelefoon”字段的值。

在每个页面加载中,都会加载来自另一个人的另一张图像,但是当该人没有图像时,它什么也不会显示。

我尝试编写一个查询来循环浏览所有帖子,但是它还会循环遍历没有图像的团队成员。

function dfib_team_spotify_shortcode( $atts ) {
    ob_start();
    $query = new WP_Query( array(
        'post_type' => 'team',
        'posts_per_page' => 1,
        'order' => 'ASC',
        'orderby' => 'rand',
    ) );
    if ( $query->have_posts() ) { ?>
            <?php while ( $query->have_posts() ) : $query->the_post(); ?>
                <?php if( get_field('team_foto_met_koptelefoon') ): ?>
                    <img class="team__spotify__img" src="<?php the_field('team_foto_met_koptelefoon'); ?>">
                <?php endif; ?>
            <?php endwhile;
            wp_reset_postdata(); ?>

    <?php $myvariable = ob_get_clean();
    return $myvariable;
    }
}

add_shortcode( 'team__spotify', 'dfib_team_spotify_shortcode' );

我想做一个循环,检查哪个团队成员具有“ team_foto_met_koptelefoon”中设置的图像,并且只显示具有图像的成员,因此我不会出现空白。

1 个答案:

答案 0 :(得分:0)

我自己添加了几行来找到解决方案:

<?php
function dfib_team_spotify_shortcode( $atts ) {
    ob_start();

    $query = new WP_Query( array(
        'post_type'         => 'team',
        'posts_per_page'    => 1,
        'order'             => 'ASC',
        'meta_key'          => 'team_foto_met_koptelefoon', //ACF field name
        'meta_value'        => ' ',
        'meta_compare'      => '!=',
        'orderby'           => 'rand',
    ) );

    if ( $query->have_posts() ) { ?>
        <?php while ( $query->have_posts() ) : $query->the_post(); ?>
            <?php if( get_field('team_foto_met_koptelefoon') ): ?>
                <img class="team__spotify__img" src="<?php the_field('team_foto_met_koptelefoon'); ?>">
            <?php endif; ?>
        <?php endwhile;

        wp_reset_postdata();

        $myvariable = ob_get_clean();
        return $myvariable;
     }
}
add_shortcode( 'team__spotify', 'dfib_team_spotify_shortcode' );
?>