WordPressで記事データのhタグにid属性を自動付加する方法です。
id属性を自動付加しておくと、記事内の特定位置にジャンプできます。
◆ 安全にfunctions.phpをカスタマイズする方法
functions.phpの修正に不安がある人は以下を参考にしてください。
functions.phpを直接修正するのは不具合時の対処やテーマ更新時に大変ですよね。それでも手間を減らす方法もあり、ここで紹介する方法と以下の記事の内容でそこそこ安全に改造できます。 拡張用のfunctions.phpを新規作成する 最初にカスタマイズ用のコードを記述するためのphpファイルを作成します。配置するディレクトリとファイル名は好みで大丈夫です。とりあえず、ここではfunctions.phpと同じディレクトリにextend-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の初期値を変更します。
あとがき
この仕組みを拡張すれば目次を自動作成する機能も自作もできます(たぶん)。
この記事は参考になりましたか?
コメント