hタグにid属性を自動付加する方法

[WordPress] <h>タグにid属性を自動付加する方法

※ 当サイトは広告を含みます。

WordPressで記事データのhタグにid属性を自動付加する方法です。
id属性を自動付加しておくと、記事内の特定位置にジャンプできます。

◆ 安全にfunctions.phpをカスタマイズする方法
functions.phpの修正に不安がある人は以下を参考にしてください。

コードを追加する

functions.phpとかに以下のコードを追加します。


// hタグにid属性を付加
add_filter('the_content', function ($content) {
  if (preg_match_all('/<h[2-5][^>]*>.*?<\/h[2-5]>/is', $content, $hs)) {

    $count = 0;
    foreach ($hs[0] as $h) {
      if (preg_match('/id=[\'"]([^\'"]*)[\'"]/i', $h, $id)) {
        if ($id[1] === '') {
          $replace = preg_replace('/id=[\'"][\'"]/', 'id="hindex' . $count . '"', $h, 1);
          $content = preg_replace('/' . preg_quote($h, '/') . '/', $replace, $content, 1);
        }
      } else {
        $replace = preg_replace('/ /', ' id="hindex' . $count . '" ', $h, 1);
        $content = preg_replace('/' . preg_quote($h, '/') . '/', $replace, $content, 1);
      }

      $count++;
    }
  }

  return $content;
}, 8);

仕組み

正規表現で見つかったhタグに連番のid属性を付加します。
開始番号を変更したい場合は$countの初期値を変更します。

あとがき

この仕組みを拡張すれば目次を自動作成する機能も自作もできます(たぶん)。

この記事は参考になりましたか?

関連記事

コメント

この記事へのコメントはありません。