私のデータベースでは、UNIXのTimeにカスタム日付を実際に登録しています。
meta_key:custom_date meta_value:1322697600
そしてメタキーの型はlongtextです
このcustom_dateの年に応じて特定の投稿を取得したい
私はこのようなものが欲しいのですが:
$args = array(
'paged' => $paged,
'posts_per_page' => 10,
'post_type' => 'custom',
'post_status' => 'publish',
'meta_query' => array(
array(
'key'=>'custom_date',
'value'=> '2010'
)
);
誰もがクエリ内の日付のカスタム日付を変換し、この日付の年だけを取得する方法を知っていますか?
PHPはDateオブジェクトをフォーマットするdate()
関数を内蔵しています。あなたのケースでは、あなたは次のようにそれを使用するでしょう:
echo date('Y', 1322697600);
これらのクエリ引数を使用して投稿の配列を作成していて、それに特に絞り込む必要があるので、希望する年フィルタに基づいてループをトリガーする関数を作成することをお勧めします。
私は以前に以下のような同様の機能を使用しました。
function check_post_date($filter_year) {
// Load the custom_date meta field
$custom_date = get_post_meta( get_the_ID(), 'custom_date', true );
// Turn it into a string that only displays the year
$custom_date_year = date('Y', $custom_date);
// If the years equal, return true.
if( $custom_date_year == $filter_year ) {
return true;
} else {
return false;
}
}
これにより、この投稿に対してループが実行されるかどうかを操作できます。
たとえば、2010年にフィルタをかけたい場合は、次のようにループを書くことができます。
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php if check_post_date('2010') : ?>
<!-- Your single post code goes here! -->
<?php endif; ?>
<?php endwhile; endif; ?>