web-dev-qa-db-ja.com

各週に1つの投稿のみを表示

私は'NEWS'という名前のカスタム投稿タイプがあります。さて、前に私はそれらをONE NEWSのためにONE WEEKを表示したいと思います。だから52ニュースが私のために一年間をカバーします。

私の質問ですが、1週間に1つのニュースを表示するようにクエリとスケジュールを実行するにはどうすればよいですか。特定の週の特定のニュースについては必須の問題はありません。各週の昇降方法として表示するだけです。

誰もがこの問題を取り除くのを助けることができるなら本当に感謝します。

前もって感謝します。

1
Mehedi Hasan

これを達成し、それを同様に効率的にするためにこれを最適化するためのかなり多くの方法があります。

これは、 offset パラメーターを WP_Query を使用して実現するための基本的な考え方です。 - )そしてphp関数 date() を使って現在の週番号を取得します。

  • まず、date( 'W' )を使って現在の週番号を取得します。これを出発点として選ぶことができます。今週の15になります。今週から15マイナス1を差し引くことで、これを1から始めることもできます。 1月1日から、正しいオフセットを取得するためにこれを別の方法で再計算する必要があります。あなたはあなたのニーズに合うようにこれで遊びに出かけることができます

  • 次に、offsetを計算します。オフセットは、最初の投稿を取得する場合は0、最後の投稿を取得する場合は51となるように、今週から1を引いたものになります。

これは今週から15に開始するサンプルクエリです。 (これは基本にすぎません。wp_reset_postdata()でクエリをリセットすることを忘れないでください。)

$args = array(
    'post_type' => 'news',
    'posts_per_page' => 1,
    'no_found_rows' => true, 
    'offset' => (date( 'W' ) - 1)
);
$q = new WP_Query( $args );
var_dump( $q->posts );

これにより、投稿タイプnewsから1つの投稿が得られます。これは、週の初めに新しい週の始まりとともに変更されます。

1
Pieter Goosen