【WordPress】アーカイブで記事コンテンツを取得。コンテンツから任意のHTMLタグのみ取得する方法

記事一覧でget_the_contentを使い、記事のコンテンツを取得。
取得したコンテンツから任意のhtmlタグのみ取得し、中身のテキストを出力したい。
本記事ではこのような悩みを解決。
実装方法について解説します。
記事コンテンツから任意のHTMLタグを取得
<!-- 記事一覧ループ -->
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<!-- 記事コンテンツからh2タグを取得・出力 -->
<ul>
<?php
// 記事コンテンツを取得
$content = get_the_content();
// 配列定義
$h2_list = array();
// コンテンツ内にあるh2タグをあるだけ配列に格納
preg_match_all('/<h[2]>.+<\/h[2]>/u', $content, $h2_list);
foreach ($h2_list[0] as $key => $h2_list_value) :
?>
<!-- h2タグの中身を出力 -->
<li><?php echo strip_tags($h2_list_value); ?> </li>
<?php endforeach; ?>
</ul>
</div>
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
記事一覧のループ内で記事コンテンツを取得・出力するコード例です。
記事コンテンツにあるh2タグのみ取得して、中身のテキストをliタグに出力してます。
実装手順は以下の通りです。
get_the_contentを使って記事コンテンツを取得
// 記事コンテンツを取得
$content = get_the_content();
まず最初にget_the_contentを使って記事コンテンツをすべて取得します。
任意のHTMLタグのみ取得
// 配列定義
$h2_list = array();
// コンテンツ内にあるh2タグをあるだけ配列に格納
preg_match_all('/<h[2]>.+<\/h[2]>/u', $content, $h2_list);
次に記事コンテンツ内にある任意のhtmlタグ(本記事では例としてh2タグ)をpreg_match_allを使って全て取得します。
第一引数に正規表現を使って取得したいHTMLタグを記述。
第二引数にget_the_contentで取得したコンテンツ。
第三引数に取得したh2タグを格納する配列変数を指定します。
任意のHTMLタグの中身だけ出力
<?php
foreach ($h2_list[0] as $key => $h2_list_value) :
?>
<!-- h2タグの中身を出力 -->
<?php echo strip_tags($h2_list_value); ?>
<?php endforeach; ?>
foeachを使って、前章で取得した任意のHTMLタグが入ってる配列をforeachで展開。
最後にstrip_tags関数を使って、任意のHTMLタグの中身だけ取得・出力します。
以上で実装完了です。
まとめ
WordPressのアーカイブで記事コンテンツを取得。コンテンツから任意のHTMLタグのみ取得する方法について紹介しました。
以上で解説を終わります。
目次