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 プログラミング

【ワードプレス】記事の公開日・更新日が同じとき、更新日を非表示にする方法

2020.06.25
571
WordPress プログラミング

【wordpress投稿】アイキャッチではなく最初の画像をサムネイルにする方法

更新日:2021.10.26
739
WordPress

【簡単】jQueryを使って、wordpressのRSSを取得し記事を表示する方法【プラグイン不要】

更新日:2022.09.09
2488
WordPress

WordPressでSVGファイルをアップロード出来るようにする方法

2022.11.17
282