クライアント様より、お知らせの作成日時ではなく、そのお知らせに記載したイベントが開催される日を表示して、ソートして欲しいご希望がありました。
というわけで、こんな感じで対応しました。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> <a href="<?php the_permalink()?>"><?php the_title();?></a> </div>
キー名 | 内容 |
---|---|
meta_key | カスタムフィールドのキー名 |
meta_value | カスタムフィールドの検索に利用する値 |
meta_compare | カスタムフィールドのフィルタ条件 |
meta_type | カスタムフィールドの型(今回は日付型) |