【问题标题】:Custom loop not displaying all available posts自定义循环不显示所有可用帖子
【发布时间】:2017-11-19 13:33:10
【问题描述】:

我正在处理的自定义 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>

【问题讨论】:

    标签: php wordpress advanced-custom-fields acfpro


    【解决方案1】:

    如果您要比较日期,则需要将它们转换为适当的类型。将它们转换为 Unix 时间戳,然后您可以轻松比较日期何时超过。目前,您正在比较哪个字符串大于另一个有时有效的字符串,但使用 Unix 时间戳更可靠,因为您的日期格式始终需要匹配。

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

    【讨论】:

      【解决方案2】:

      只需在“if”语句之前打印比较日期,您就会看到哪里出错了。

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

      这可能是因为无效的日期格式、空的 $expire 字段等。无论如何,您将在执行该打印后看到原因。

      【讨论】:

        【解决方案3】:

        解决这个问题的方法是将循环改为:

        <?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(); ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-05
          • 1970-01-01
          相关资源
          最近更新 更多