WP_Queryループで抽出条件を指定@WordPress
WordPressのループでカテゴリを指定する例です。
WP_Query()です。
サブループなのでループごとにリセットの記述をしておけば同一ページで複数の異なるループ(カテゴリごとに分けてとか)を出力出来ます。
<?php $query = new WP_Query(array( 'posts_per_page' => 6, // 表示件数 'post_type' => 'post', /* イベント投稿タイプ */ 'category_name' => 'news', /* カテゴリのスラッグを指定 */ // 'cat' => '2', /* カテゴリIDで指定する場合(複数ある場合はカンマでつなげる) */ 'post_status' => 'publish', /* 公開している */ )); if($query->have_posts()): while($query->have_posts()) : $query->the_post(); ?> <div> <div> <strong><a href=""><?php the_title(); ?></strong></h1> <p><?php echo my_excerpt(38); ?></p> <a href="<?php the_permalink(); ?>" class="read">続きを読む</a> </div> </div> <?php endwhile; ?> <?php else : ?> <div> <div> <p>表示する記事はありませんでした。</p> </div> </div> <?php endif; ?> <?php wp_reset_postdata(); /* WP_Queryのループをリセット */ ?>
投稿の抜粋を制御する独自関数
<?php echo my_excerpt(38); ?>
上記の記述は本投稿の主題とは関係ありませんが、ホームやカテゴリごとの一覧ページ等で「本文の最初◯◯文字まで」というふうに出力を制限する場合にわりとよく使用する(すくなくとも私は)関数です。ご利用のthemeのfunctions.phpに以下を記述して使います。指定した文字数を超えた場合には末尾に三点リーダー(…)を出力し、その後に「▶」も出力します。
/** 抜粋表示 **/ function my_excerpt( $length ) { global $post; $content = mb_substr( strip_tags( $post -> post_content ), 0, $length ); $content = $content . " …<a class=\"more\" href=\"" . get_permalink() . "\">▶</a>"; return $content; }
上記コードをfunctions.phpに記述した上で、実際に抜粋を表示するテンプレートに前述のこれを記述します。数字部分が出力する文字数になります。
<?php echo my_excerpt(38); ?>
本格ビジネスサイトを作りながら学ぶ WordPressの教科書 Ver.4.x対応版
- 作者: プライム・ストラテジー株式会社
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/02/21
- メディア: 大型本
- この商品を含むブログ (3件) を見る