2016-11-15 146 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

相關問題