簡體   English   中英

自定義循環未顯示所有可用帖子

[英]Custom loop not displaying all available posts

我正在使用自定義的Wordpress / ACF循環遇到麻煩。

想法是,它在“事件”帖子類型中顯示最新的帖子,隱藏事件日期已過的所有帖子。

如果日期已過,則帖子會隱藏。 但是,循環並沒有顯示可用的帖子總數。 當前在下面的循環中,它僅顯示可用10中的6。

我已經檢查了Wordpress中的閱讀設置,這很好。

我用於循環的代碼是:

<ul class="events-list">

<?php 
    $loop = new WP_Query( array( 
        'post_type' => 'events',
        'posts_per_page' => -1,
        'orderby' => 'meta_value',
        'order' => 'ASC',
        'meta_type' => 'DATE',
        'meta_key' => 'event-date'
    ));

    while ( $loop->have_posts() ) : $loop->the_post(); 

    $today = date('dmY');
    $expire = get_field('event-date');

    if( $expire > $today )

{ ?>

    <li>
        <h3><?php the_field('event-date'); ?> - <?php the_title(); ?></h3>
        <span class="time"><?php the_field('event-time'); ?></span>
        <?php the_field('event-details'); ?>
    </li>

<?php; } endwhile; wp_reset_query(); ?>

</ul>

如果要比較日期,則需要將它們轉換為適當的類型。 將它們轉換為Unix時間戳,然后您可以輕松地比較何時超過日期。 目前,您正在比較哪個字符串大於另一個有時可以使用的字符串,但是使用Unix時間戳更為可靠,因為您需要始終匹配日期格式。

if(strtotime(get_field('event-date')) > date('U')) {
    //Your code here
}

只需在“ if”語句之前打印比較的日期,您就會看到錯誤的地方。

echo $expire.'__'.$today.'<br>';
if( $expire > $today )

這可能是由於無效的日期格式,空的$ expire字段等引起的。無論如何,實現該打印后,您將看到原因是什么。

解決此問題的方法是將循環更改為:

<?php 

    $today = date('Ymd');

    $loop = new WP_Query( array( 
        'post_type' => 'events',
        'showposts' => 2,
        'meta_key' => 'event-date',  
        'meta_compare' => '>',  
        'meta_value' => date("Ymd"),
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    ));

    while ( $loop->have_posts() ) : $loop->the_post(); 

{ ?>

Post stuff here

<?php; } endwhile; wp_reset_query(); ?>

暫無
暫無

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

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