2015-08-03 3 views
0

У меня есть пользовательское поле, называемое dead_date, где я помещаю дату, подобную этой dd-mm-yyyy. Теперь я звоню его так, я могу заказать его по дате, как это:Пользовательское поле дата заказа

  • 01-03-2015
  • 27-02-2015
  • 14-12-2014

Но то, что у меня есть это:

  • 01-03-2015
  • 14-12-2014
  • 27-02-2015

вниз ниже вы найдете мой код

$args = array(
     'posts_per_page' => 500, 
     'offset'   => 0, 
     'category'   => 1, 
     'meta_key'   => 'dead_date', 
     'orderby'   => 'meta_value', 
     'order'   => 'DESC', 
     'post_type'  => 'post', 
     'post_status'  => 'publish', 
     'suppress_filters' => true 
); 

$posts_array = get_posts($args); 

ответ

0

Попробуйте добавить meta_type и значение 'DATE'.

$args = array(
     'posts_per_page' => -1,  
     'category'   => 1, 
     'meta_key'   => 'dead_date', 
     'orderby'   => 'meta_value', 
     'order'   => 'DESC', 
     'post_type'  => 'post', 
     'post_status'  => 'publish', 
     'suppress_filters' => true, 
     'meta_type'  => 'DATE' 
); 
$posts_array = get_posts($args); 

get_posts использует WP_Query, так что вы можете быть в состоянии использовать одни и те же параметры, и в соответствии с WP_Query documentation:

«meta_value» - Обратите внимание, что «meta_key = имя_раздел» должен также присутствовать в запросе . Также обратите внимание, что сортировка будет в алфавитном порядке, которая является штрафом для строк (т.е. слов), но может быть неожиданным для чисел (например, 1, 3, 34, 4, 56, 6 и т. Д., А не 1, 3, 4, 6, 34, 56, как вы могли бы естественно ожидать). Вместо этого используйте «meta_value_num» для числовых значений. Вы также можете указать «meta_type», если вы хотите отличить мета значение как определенного типа. Возможные значения: «NUMERIC», «BINARY», «CHAR», «DATE», «DATETIME», «DECIMAL», «SIGNED», «TIME», «UNSIGNED», то же, что и в «$ meta_query».

Если он не работает, то, возможно, придется использовать WP_Query вместо get_posts.

+0

Я не понимаю. Что я должен изменить тогда? –

0
$args = array(
     'posts_per_page' => -1,  
     'category'   => 1, 
     'meta_key'   => 'dead_date', 
     'orderby'   => 'meta_value', 
     'order'   => 'DESC', 
     'post_type'  => 'post', 
     'post_status'  => 'publish', 
     'suppress_filters' => true 
); 
$posts_array = get_posts($args); 

Это может вам помочь. Ура !!

+0

Нет, это не работает –

+0

не могли бы вы удалить 'order' => 'DESC', и попробуйте один раз? – researcher

+0

Если я делаю это, это работает, но не ASC, но я изменил свой вход на yyyy-mm-dd, а затем он сработал. Но спасибо в любом случае! –

Смежные вопросы