基于查询隐藏循环外的元素

时间:2016-08-07 作者:AKNL

我有点卡住了。我想在作者页上显示3个部分。第一节显示了作者根据标签纹身上传的所有图像。第二节显示了作者基于标签穿孔上传的所有图像。第三节显示了作者根据标签修改上传的所有图像。到目前为止还不错。这是我在一节中使用的代码:

<!--- start test --->

                <div class="uk-grid" data-uk-grid-margin>
                    <div class="uk-width-1-1">
                        <h2>Tattoo Work by <span style="text-transform: capitalize;"><?php the_author_meta(\'user_nicename\'); ?></span>:</h2>
                        <ul id="switcher-content" class="uk-switcher">
                            <li class="uk-active">
                                <div class="uk-grid" data-uk-grid-margin>

                                    <?php // Loop Tattoo
                                    $first_query = new WP_Query(\'cat=1&author=\' . $post->post_author . \'&order=DESC&tag=Tattoo&posts_per_page=1000\');
                                    while($first_query->have_posts()) : $first_query->the_post(); ?>

                                    <div class="uk-width-medium-1-4">
                                        <a href="<?php the_permalink() ?>?MediaTag=Tattoo">
                                        <?php 
                                            if ( has_post_thumbnail() ) { 
                                            the_post_thumbnail(\'artiststhumbnailsize\');
                                            } 
                                        ?>
                                       </a>
                                    </div>

                                    <?php endwhile;
                                    wp_reset_postdata(); ?>

                                </div>  
                            </li>
                        </ul>
                    </div>
                </div>

                <!--- end test --->`
但是,我只想在每个部分都有图像的情况下显示h2标题。为了防止h2标题在没有以下图像的情况下显示。所以我有点需要预先检查查询,但我找不到任何东西可以实现这一点。另外两个查询是$second\\u query和$third\\u query,每个查询都有自己的标记定义。提前感谢您的帮助!

2 个回复
最合适的回答,由SO网友:guido 整理而成

您可以使用该功能wp_list_pluck 获取从查询中检索到的帖子的ID。

只需将查询移到h2元素之前,并获取posts ID:

// Set a bool to know if at least one post has post thumbnail.
$has_thumb   = false;
$first_query = new WP_Query(\'cat=1&author=\' . $post->post_author . \'&order=DESC&tag=Tattoo&posts_per_page=1000\');

// Check if the query have posts.
if ( $first_query->have_posts() ) {
    // Get the posts id\'s.
    $ids = wp_list_pluck($first_query->posts, \'ID\');

    foreach( $ids as $id ) {
        if ( has_post_thumbnail($id) ) {
            $has_thumb = true;
            break; // If at least we have a post thubmnail we don\'t need to continue.
        }
    }
}
然后,您可以检查是否有缩略图,如果有,则显示h2。

<?php if ( $has_thumb ) : ?>
    <h2>Tattoo Work by <span style="text-transform: capitalize;"><?php the_author_meta(\'user_nicename\'); ?></span>:</h2>
<?php endif; ?>

SO网友:jgraup

将变量设置为$has_images = false; 然后循环浏览您的帖子,仅检查$has_images = $has_images || has_post_thumbnail(). 现在只生成节if ( $has_images ) { }. 在再次循环查询之前,请确保倒带帖子-https://codex.wordpress.org/Function_Reference/rewind_posts