Written by Kasumi

【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タグのみ取得する方法について紹介しました。

以上で解説を終わります。

目次

関連記事

WordPress プログラミング

投稿の一覧ページで、過去記事を一番先頭に持ってくる方法【ワードプレス】

2019.11.29
1508
WordPress

【WordPress】投稿記事の本文を文字数制限して表示する方法

2023.05.28
978
WordPress

【WordPress】登録されてるカスタム投稿タイプのスラッグを配列ですべて取得する方法

2022.11.09
962
WordPress

WordPressでカテゴリ一覧を表示する方法【結論:get_categories関数を使おう】

更新日:2022.05.28
1500