投稿一覧で特定のカテゴリだけ2記事目以降を表示したいときメモ

すごい限定的だけど必要になったのでメモ。

<?php
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
  $html .= "<ul>";
  while ( $the_query->have_posts() ) {
    $the_query->the_post();
    if((in_category('neko') && (get_post_status($post->ID) == 'publish' ) )){ //猫カテゴリ 且つ ステータスが「公開」の場合
    $counter++; //何記事目かをカウントする
      if($counter >= 2){  //2記事目以降の場合は出力
        $html .= '<li>' . get_the_title() . '</li>';
      }
    } else { //それ以外の場合は通常通り出力
      $html .= '<li>' . get_the_title() . '</li>';
    }
  }
  $html .= '</ul>';
  echo $html;
  wp_reset_postdata();
} else {
}
?>

in_category、get_post_status

if((in_category('neko') && (get_post_status($post->ID) == 'publish' ) ))

in_categoryは投稿記事に指定したカテゴリーが割り当てられているか調べます。
今回の場合、公開済みの記事に限定して分岐させてます。
複数指定したい場合はarrayを使います。

in_category( array( 'neko', 'inu', 'tanuki' ) )

get_post_statusは投稿記事の公開ステータスを取得します。

  • publish– 公開済
  • pending – 承認待ち
  • draft – 下書き
  • auto-draft – 新規作成された投稿。まだコンテンツがない。
  • future – 予約済(未来に投稿される)
  • private – 非公開(ログインしていないユーザーから見えない)
  • inherit – リビジョン
  • trash – ゴミ箱にある投稿

記事数のカウント

上記の分岐に更に条件をつけます。

  1. $counterで現在が何記事目かを把握
  2. 1記事目以外の場合(2記事目以上)は普通に投稿タイトルを出力する
    $counter++; //何記事目かをカウントする
      if($counter >= 2){  //2記事目以降の場合は出力
        $html .= '<li>' . get_the_title() . '</li>';
      }
    }

ああ~~もっと良い方法ありそうだけど私のググり力ではこれが限界だった_(:3 」∠ )_PHP勉強したい

参考になったサイト