2016-03-14 199 views
0

我有兩個使用高級自定義字段創建的自定義字段。 一種是複選框(isEvent)類型,另一種是日期類型(closing_date)。 如果我想所有的事件的帖子,我會做這樣的事情使用高級自定義字段篩選和排序wordpress get_posts

<?php $args = array(
    'posts_per_page' => 7, 
    'offset'   => 0, 
    'category'   => '', 
    'category_name' => '', 
    'orderby'   => '', 
    'order'   => '', 
    'include'   => '', 
    'exclude'   => '', 
    'meta_key'   => 'is_event', 
    'meta_value'  => 'a:1:{i:0;s:4:"true";}', 
    'post_type'  => 'events', 
    'post_mime_type' => '', 
    'post_parent'  => '', 
    'author'   => '', 
    'post_status'  => 'publish', 
    'suppress_filters' => 0 
); 
$my_posts_array = get_posts($args); 

,這是工作。 但是如果我想通過closing_date它的類型是日期的自定義字段進行排序時,ACF文檔排序中建議,我應該做這樣的事情:

<?php $args = array(
    'posts_per_page' => 7, 
    'offset'   => 0, 
    'category'   => '', 
    'category_name' => '', 
    'orderby'   => 'meta_value_num', 
    'order'   => 'asc', 
    'include'   => '', 
    'exclude'   => '', 
    'meta_key'   => 'closing_date', 
    'meta_value'  => '', 
    'post_type'  => 'events', 
    'post_mime_type' => '', 
    'post_parent'  => '', 
    'author'   => '', 
    'post_status'  => 'publish', 
    'suppress_filters' => 0 
); 
$my_posts_array = get_posts($args); 

這是行不通的。更新 - 我設法讓這個東西起作用。我沒有改變任何東西,經過幾次測試它的工作....

有人可以回答這些問題(或全部)嗎?

  1. 什麼是在WordPress的兩個自定義字段的方式,你想 由另一個和篩選排序?
  2. 這是可能的一個get_posts調用或是否有任何其他 原生wp技術?
  3. get_posts在get_posts的參數列表中有相同的 參數列表中的meta_key,meta_value和meta_query嗎?

我還想補充一點,我正在使用帶有2種語言en和fr的WPML翻譯插件。

回答

3

編寫查詢的方式是

$my_posts_array = get_posts(array(
     'post_type'   => 'events', 
     'posts_per_page' => '7', 
     'offset'   => 0, 
     'post_status'  => 'publish', 
     'suppress_filters' => 0, 
     'meta_query'  => array(
      array(
       'key'  => 'is_event', 
       'value'  => 'a:1:{i:0;s:4:"true";}', 
       'compare' => '=' 
      ) 
     ), 
     'orderby' => 'meta_value_num', 
     'meta_key' => 'closing_date', 
     'order' => 'ASC', 
     ) 
    ); 

2.Yes這是一個呼叫嘗試上面的代碼,或者如果沒有woeking那麼試試這個可能。

$my_posts_array = get_posts(array(
    'post_type'   => 'events', 
    'posts_per_page' => '7', 
    'offset'   => 0, 
    'post_status'  => 'publish', 
    'suppress_filters' => 0, 
    'meta_query'  => array(
     array(
      'key'  => 'is_event', 
      'value'  => 'a:1:{i:0;s:4:"true";}', 
      'compare' => '=' 
     ) 
    ), 
    ) 
); 

// The Loop 
foreach ($my_posts_array as $key => $value) { 
    $allowed_posts[] = get_the_ID(); 
} 


$sorted_array = get_posts(array(
    'post_type'   => 'events', 
    'posts_per_page' => '7', 
    'offset'   => 0, 
    'post_status'  => 'publish', 
    'suppress_filters' => 0 , 
    'post__in'   => $allowed_posts, 
    'orderby'   => 'meta_value_num', 
    'meta_key'   => 'closing_date', 
    'order'    => 'ASC', 
); 

foreach ($sorted_array as $key => $value) { 
    //do the stuff here 
} 
0

好吧, 我設法自己回答這個問題。 1.這是做這件事的一種方法:

   <?php $args = array(
       'posts_per_page' => 7, 
       'offset'   => 0, 
       'category'   => '', 
       'category_name' => '', 
       'orderby'   => 'meta_value_num', 
       'order'   => 'ASC', 
       'include'   => '', 
       'exclude'   => '', 
       'meta_key'   => 'closing_date', 
       'meta_value'  => '', 
       'post_type'  => 'events', 
       'post_mime_type' => '', 
       'post_parent'  => '', 
       'author'   => '', 
       'post_status'  => 'publish', 
       'meta_query' => array(
          array('key' => 'is_event', 
            'value' => 'a:1:{i:0;s:4:"true";}' 
          ) 
         ), 
       'suppress_filters' => 0 
      ); 
      $my_posts_array = get_posts($args); 

2.我以爲您可以在此以類似的方式與WP_Query,因爲我居然用這種方法get_posts完成。 3.Answer就像上面的例子一樣。

相關問題