簡體   English   中英

檢查Wordpress循環中是否有帖子

[英]Check if Wordpress loop has posts

我有一個帶有自定義元字段復選框添加的帖子的自定義循環。 僅當選中此復選框時,該帖子才被添加到循環中。 我有一個保存該循環的容器。 我想做的是檢查該循環是否有任何帖子,以及是否為空-只需隱藏該容器即可。 因為否則,當循環為空時,容器將保留在頁面上:

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

這是循環:

<?php 
/* Slider ------- */
$slider = new WP_Query('showposts=-1');
if ( $slider->have_posts() ):
?>  
<div>
    <ul>
    <?php while ( $slider->have_posts() ) : $slider->the_post(); ?>
        <?php if ( get_post_meta($post->ID, "mf_homeslider", true) == 'slider_on' ){ // Check if post was added to slider ?>
        <li>
        <?php if (has_post_thumbnail()) {  ?>
            <a href="<?php the_permalink(); ?>">
                <?php the_post_thumbnail('large'); ?> 
            </a>
        <?php } ?>
            <div>
                <?php get_template_part('includes/post_meta'); ?>
                <h2>
                    <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                </h2>
            </div>
        </li>
        <?php } ?>
    <?php endwhile; ?>
    </ul>
</div>
<?php 
endif;
wp_reset_query();
?>

預先感謝您的幫助。

您應該按自定義字段過濾查詢(請參閱此處的詳細信息),這也可以提高性能(SQL條件與while-if循環)。 之后, have_posts()返回循環是否包含任何帖子。

所以代替

$slider = new WP_Query('showposts=-1');

采用

$slider = new WP_Query(array(
    'meta_key' => 'mf_homeslider',
    'meta_value' => 'slider_on',
    'posts_per_page' => -1)
);

並且不再需要if ( get_post_meta(...

(不建議使用showposts ,請改用posts_per_page )。

注意:您將花括號和if-endif樣式混合使用,嵌套時后者易於閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM