2016-11-15 112 views
0

我有一个名为“Events”的自定义帖子类型。帖子显示正常,除了WP Query循环只显示一个帖子而不是全部帖子。这里是我的events.php文件的完整代码:无法更改WordPress中的每个帖子的帖子帖子类型查询

function min_get_events ($echo = true) { 
    $events = new WP_query(array(
    'post_type' => 'events', 
    'posts_per_page' => -1, 
    'order' => 'ASC', 
    'orderby' => 'meta_value', 
    'meta_key' => 'min_event-start', 
    'meta_query' => array(
     'key'  => 'min_event-start', 
     'value' => date('Y-m-d'), 
     'compare' => '>', 
    ) 
)); 

$i = 0; 
$n = 1; 

if ($events->have_posts()) : 
    while ($events->have_posts()): 
     global $post; 
     $events->the_post(); 

     $open_date = get_post_meta($post->ID, 'min_event-start', true); 
     $close_date = get_post_meta($post->ID, 'min_event-end', true); 
     $start = strtotime($open_date); 
     $end = strtotime($close_date); 
     if ($start==$end || $start > $end) { 
      $date_string = date('F j, Y', $start); 
     } 
     else { 
      $date_string = date('F j, Y', $start) .' – '. date('F j, Y', $end); 
     } 
     //$description = get_post_meta($post->ID, 'event-description', true); 
     $location = get_post_meta($post->ID, 'min_event-location', true); 
     $url = get_post_meta($post->ID, 'min_event-url', true); 
     //$registration_url = get_post_meta($post->ID, 'event-registration-url', true); 
     $cta_text = get_post_meta($post->ID, 'min_event-cta-text', true); 
     $cta = !empty($cta_text) ? $cta_text : 'Register Now'; 

     $i++; 
     if ($i == 1) { 
      ?> 
      <div class="row"> 
      <?php 
     } 
     ?> 
     <div class="event col-sm-4"> 
      <a href="<?= $url ?>"> 
       <?php the_post_thumbnail('thumb-events'); ?> 
      </a> 
      <h1><?= htmlentities($post->post_title) ?></h1> 
      <div > 
       <div><?= $date_string; ?></div> 
       <div><?= htmlentities($location) ?></div> 
       <div><a href="<?=$url;?>" class="register-now"><?= $cta; ?></a></div> 
      </div> 
      <!-- <p><?= $description ?></p> --> 
      <!-- <p><a href="<?=$url;?>" class="register-now"><?= $cta; ?></a></p> --> 
     </div> <!-- .event --> 
     <?php 


     if ($i == 3 || ($events->current_post +1) == $events->post_count) { 
      ?> 
      </div> <!-- <?php echo $i; ?> .row <?php echo $n; ?> --> 
      <?php 
      $i = 0; 
      $n++; 
     } 

    endwhile; 
endif; 

ob_start(); 
?> 

<?php 
$return = ob_get_contents(); 
ob_end_clean(); 
wp_reset_postdata(); 
if ($echo) { 
    echo $return; 
} else { 
    return $return; 
} 
} 

我在这里丢失了什么?

+0

你尝试'的var_dump(计数($事件 - >帖));'来检查是否有真的只有一个结果?你试过posts_per_page 999吗?你确定有超过1个帖子符合你的标准吗? – Blackbam

+0

我试过了,还是只显示1贴@Blackbam – MikeL5799

回答

2

你的元查询是错误的(这个错误很容易发生,我自己做了一次)。如果你正在做'meta_query',你必须在数组内部创建数组,每个数组为一个元参数。请参见下面的代码:

$events = new WP_query(array(
    'post_type' => 'events', 
    'posts_per_page' => -1, 
    'order' => 'ASC', 
    'orderby' => 'meta_value', 
    'meta_key' => 'min_event-start', 
    'meta_query' => array(array(
     'key'  => 'min_event-start', 
     'value' => date('Y-m-d'), 
     'compare' => '>', 
    )) 
)); 

更多信息食品:https://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

+0

谢谢。我这样做,仍然只有1个职位正在显示 – MikeL5799

+0

嗯,这是奇怪的。尝试使用另一个元键。尝试type =>'numeric',尽管我认为它不需要日期。检查主题/插件中的操作和过滤器。也许有些东西会过滤输出? 如果仍然无法正常工作,则可以使用$ wpdb来查询帖子。 – Blackbam