毎回設定するようにしているナカトミツヨシ(@meganetosake)です。
WordPressで目次を表示する際に利用している「Easy Table of Contents」プラグイン。非常に便利でカスタマイズも容易なので毎回使っているのだが、日本語の見出しの場合、アンカーも日本語になってしまう。
https://monotokoto.jp/customize-toc/#アンカーが日本語で困ること
これで大丈夫な場合は良いのだが、アンカーが日本語だとたまーに問題や不具合が発生する。
CONTENTS
アンカーが日本語で困ること
- アンカーが日本語の場合、うまくリンク先に飛ばないケースがある
- アンカーが日本語なので、リンクがやたら長くなる
- 見出しを変更するとアンカーも変わるので、リンク先が変わってしまう
- 例えばGoogleのHow-to構造化データでリンクを明示している時も困るので、リンク先を固定したい
そんな時は、アンカーを連番にカスタマイズすると解決できる。
https://monotokoto.jp/customize-toc/#アンカーが日本語で困ること
↓https://monotokoto.jp/customize-toc/#toc_01
今回は、そのカスタマイズ方法と使い方をメモしておきたいと思う。
テンプレートのfunctions.phpに追記する
実はWordPressのテンプレート「functions.php」に追記するだけで導入が可能になる。サンプルのコードはこちら。
/*-----------------------------------------------------*/
// Easy Table of Contentの見出しを連番に
/*-----------------------------------------------------*/
$toc_count = 0;
function anchor_change($return, $heading ) {
global $toc_count;
$toc_count = $toc_count + 1;
return "toc_".sprintf('%02d', $toc_count);
}
add_filter('ez_toc_url_anchor_target', 'anchor_change', 10, 2);
この記述を追加すると、毎回アンカーリンクが連番に自動変換されるので、日本語見出しの際の飛ばない不具合や、リンクが無駄に長くなることも防げて、URLの固定化もできるようになる。
リンクはなるべく変わらないほうがいい
「Easy Table of Contents」はWordPressの中でも大好きなプラグインで、このブログでも目次を表示するために使っている。ただ見出しを変えるたびにリンク先が変わってしまうのは非常に困るケースが多かった。その問題を解決できるので、私は毎回このコードをfunctions.phpに入れてカスタマイズするようにしている。
実は私は、日本語の見出しにしているせいでリンクが飛ばない不具合にはあまり遭遇したことはない。ただ、リンク固定化の恩恵は計り知れず、その副産物として不具合を未然に防げるなら一石二鳥だ。
このコードをぜひ参考にしてもらえると嬉しい。