2016-05-07 10 views
0

ahoy-hoyポストメタの番号がorderbyのために機能しない

私はイベントのリストを注文するためにポストメタを使用しようとしています。メタキーは_event_dateで、メタ値は 'yymmdd'に格納されます。私が欲しいのは簡単です:「イベント」というカスタムポストであるイベントを、現在の日付に最も近いイベントから開始したいとします。しかし、それは動作していません。

はここに私のコードです:だから

$args = array(
    'post_type' => 'events', 
    'posts_per_page' => -1, 
    'meta_key' => '_event_date', 
    'orderby' => 'meta_value_num', 
    'order' => 'ASC' 
); 

$query = new WP_Query($args); 

if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); 

endwhile; endif; 

、これで間違っているとして際立っているものはありますか?

ありがとうございます!

答えて

0

これはWordPressのコーデックスから、あなたに興味があります

注文& ORDERBYパラメータ

'meta_value'

なお、 'meta_key =キー名' しなければならないもクエリに表示されます。 並べ替えはアルファベット順で行われ、 文字列(つまり単語)では問題ありませんが、数字の場合は予期しないアルファベット順になります(例:1,2,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' のように
同じ。 'meta_type'を使用する場合は、
のmeta_value_ *を使用することもできます。たとえば、DATETIMEを
'meta_type'とすると、 'meta_value_datetime'を使用して、
の順番を定義できます。

だからあなたのクエリの引数は次のようになります。

$args = array(
    'post_type' => 'events', 
    'posts_per_page' => -1, 
    'meta_key' => '_event_date', 
    'meta_type' => 'DATE', 
    'orderby' => 'meta_value_date', 
    'order' => 'ASC' 
); 

それがお役に立てば幸いです。

+0

Hey iEmanuele。コーデックスを参照してから、配列を書きとめてくれてありがとう。それはたくさんの助けになりました。 – producto

+0

@producto、pls、あなたの問題が解決された場合、有効な回答としてマーク、ありがとう – iEmanuele

関連する問題