[毎日新捗]毎日新捗カウンターを作った

GWの振り返り記事で書いた通り、最初に進捗カウンターを作ってみることにしました。本記事は作成したコードの解説を行っていきます。

~~正直他人のコードをコピペして改変しただけなのであまり自力で作ったとは言えないんですがね…~~

  • wordpressのメインループとサブループ
  • メインループ:wordpressの投稿一覧を取得する仕様
    サブループ:メインと大体同じだが、細かい指定が出来る…?(フィーリング)

    ソースコード上では17~20行目と38行目の

    
    $the_query = new WP_Query($args);
    if ( $the_query->have_posts() ) :
            while ( $the_query->have_posts() ) : $the_query->the_post();
    ~~~中略~~~
    endwhile; endif;
    

    にあたります。
    このループ内に書かれた処理はWP_Queryで取得した投稿情報を扱うことができ、取得した投稿それぞれにつき1度ずつ実行されます。投稿が処理される順番は、WP_Queryインスタンスに渡されている$argの `’orderby’ => ‘post_date’` で指定されており、値がpost_dataの場合は投稿日時の降順で処理されるようです。

  • メイン関数内の処理
  • カウンターとして動作するためのコードは

    
    
        $mypost_date=strtotime(get_the_date('Y-n-j').'+1 day');
        if($mypost_date < $previous_date){ break; }else{ ++$shinchoku_cnt; } $previous_date=$mypost_date
    

    これだけです。何日間連続かカウントする処理の説明をします。
    投稿の降順(新しい投稿から順に)処理されるので、 “今処理中の投稿日時”の次の日 **は** “1つ前に処理された投稿の投稿日時” と同じ日か、それより新しい(つまり2つの記事が同日に投稿された)場合しか連続してません。つまり今処理中の投稿日時よりも、1つ前に処理された投稿日時のほうが大きいなら、それは2つの投稿の間に1日以上の間が空いていることになります。

    なんか日付処理って難しいイメージで(実際難しいんで)すが、phpは割と日付処理をサポートしてくれてるので、何も考えず比較演算子使うだけで良かったりします。というか説明するの意外と難しいですね…うまく説明書けてるんだろうかこれ。

  • ちなみについでで

ついでで、「毎日進捗」カテゴリのついた最新記事の取得もやってます。やったね!(クッソ簡単なのでここでは説明しません…)

共有:

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です