web-dev-qa-db-ja.com

現在の年からの投稿を照会する

これがうまくいかない理由はよくわかりません。現在の年の投稿のみをフロントページに表示するには、次のようにします。

<?php query_posts( "&year=$current_year&order=DESC"); ?>

それでも、まだ2012年の投稿が表示されています(実際には2012年に作成されたのではありませんが、公開日は昨年の2月に表示された投稿のいずれかに設定します)。

資料によると、それは私がやるべきことです。誰もが光を当てることができますか?

ありがとう

2
Phill

現在の日付を取得して、それをwp_queryのdata_queryに追加するだけです。

<?php 

$getdate = getdate();
$args = array(
    'date_query' => array(
        array(
            'year'  => $getdate["year"]
        ),
    ),
);
$query = new WP_Query( $args );

?>

そして、loopを使います。

<?php 

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

the_title();
the_content();

endwhile; endif;

?>
5
Behzad G.

クエリの修正にquery_postsを使用しないでください。これはリソースの浪費であり、テンプレートがロードされる前に発生した元のクエリを上書きするため、予測不可能な結果を​​もたらします。

クエリを変更するには、代わりにテーマのpre_get_postsfunctions.php を使用します。 データベースに送信され、テンプレートが読み込まれる前に。

function home_page_current_year( $query ){
    if( $query->is_home() && $query->is_main_query() )
        $query->set( 'year', date('Y') );
}
add_action( 'pre_get_posts', 'home_page_current_year' );
1
Milo