wordpress has_post_thumbnail如果/其他语句不起作用

时间:2018-11-22 16:18:06

标签: php wordpress

我有以下代码,似乎忽略了显示缩略图的if / else。如果帖子设置了缩略图,它将显示所有缩略图,但是如果没有缩略图,它将不显示占位符。我是盲人还是有什么问题吗?

<?php $x = 0;
    $displayed = [];

    function runQuery($args) {
        global $displayed;
        global $x;
        $query = new WP_Query( $args );

        if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post();
            $cat_terms = get_the_terms($post->id, 'product_cat');
            $datagroups = '';

            if ( in_array( get_the_ID(), $displayed ) ){
                continue;
            }
            // update array with currently displayed post ID
            $displayed[] = get_the_ID();

            foreach ($cat_terms as $key => $cat) {
                if (count($cat_terms) == ($key + 1)) {
                    $datagroups .= '"' . $cat->name . '"';
                } else {
                    $datagroups .= '"' . $cat->name . '", ';
                }
            }
        ?>      

        <div class="flex-item product-single flex-cols-4" data-groups='[<?php echo $datagroups; ?>]' data-date-created="<?php the_modified_date('Y-m-d') ?>" data-title="<?php the_title() ?>">
            <figure class="picture-item__inner">
                <figcaption class="picture-item__title">
                    <a data-open="product-<?php echo $x; ?>">
                        <div class="product-wrap">
                            <div class="product-image">
                                <?php if( has_post_thumbnail() ) { ?>
                                    <?php the_post_thumbnail('medium');?>
                                <?php } else { ?>
                                    <img src="<?php echo get_template_directory_uri(); ?>/armco-old/assets/img/products/placeholder.jpg" alt="Coming Soon" />
                                <?php } ?>
                            </div>
                            <div class="product-title">
                                <p><?php the_title(); ?></p>
                            </div>
                        </div>
                    </a>
                </figcaption>
            </figure>
        </div>
        <?php $x ++;
        endwhile;
        endif;
        wp_reset_postdata();
    }?>
    <?php if ( $terms && !is_wp_error( $terms ) ) {

        foreach ( $terms as $term ) {

            $args = array(
                'post_type'  => 'products',
                'posts_per_page' => -1,
                'orderby' => 'menu_order',
                'tax_query' => array(
                    array(
                        'taxonomy' => 'product_cat',
                        'field'    => 'slug',
                        'terms'    => $term->slug,
                    ),
                ),
                'order' => 'asc',
            );

            runQuery($args);
        }
    } ?>
</div>

任何帮助将不胜感激,因为我看不到问题所在,当我删除第一个if语句并告诉它回显图像时,它会在图像中桥接,但是只要它在else语句中不起作用。

1 个答案:

答案 0 :(得分:0)

由于某种原因,我的原始代码不起作用,因此我将其交换以检查get_the_post_thumbnail()函数是否为空:

$response = Colonia::where('codigo_postal', $codigo_postal) // query builder
                 ->first() // returns an instance of Colonia
                 ->city; // now it can access the model properties.