Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

WordPressのカスタムフィールドを日付としてソートしたい

クライアント様より、お知らせの作成日時ではなく、そのお知らせに記載したイベントが開催される日を表示して、ソートして欲しいご希望がありました。

というわけで、こんな感じで対応しました。WP3.8.1で動作確認済。

Advanced Custom Fieldsのインストール

http://wordpress.org/plugins/advanced-custom-fields/

コレ便利です。色んな型のカスタムフィールドをサポートしてくれています。

僕は今回、開催日(open_date)というカスタムフィールドを作りました。

カスタムフィールドを元に検索する

こんな感じですね。

開催のお知らせのため、昨日以降の開催日のお知らせは要らないのでそこも加味してあります。

<?php
 $posts = get_posts( 
                array( 
                    'numberposts'=>5,
                    'category_name'=>'event',
                    'meta_key' => 'open_date',
                    'meta_value' => date("Y-m-d"),
                    'meta_compare' => '>=',
                    'meta_type' => 'DATE',
                    'order_by' => array('open_date'),
                    'order' => 'ASC',                    
                )
             );
            foreach($posts as $post) : setup_postdata($post);?>
             <div class="main-information">
                <span class="postdate"><?php echo get_post_meta($post->ID, 'open_date', true)?></span>&nbsp;
                <a href="<?php the_permalink()?>"><?php the_title();?></a>
             </div>
キー名 内容
meta_key カスタムフィールドのキー名
meta_value カスタムフィールドの検索に利用する値
meta_compare カスタムフィールドのフィルタ条件
meta_type カスタムフィールドの型(今回は日付型)