WordPressのプラグインの中に「Table of Contents Plus」というものがあります。
このプラグインは見出しから自動で目次を生成してくれる便利なプラグインですが、見出しに数字が入った時にアンカーリンクがうまく動作しないというエラーが発生します。今回はその対処法をご紹介します。
バージョン:2311(2024年1月時点で最新)
エラーの対処法
functions.phpに下記を追加します。
PR
function toc_custom_anchor( $anchor ) {
return 'toc_' . $anchor;
}
add_filter( 'toc_url_anchor_target', 'toc_custom_anchor' );
ソースコードの解説
このコードを functions.php
に追加すると、目次のアンカーはすべて「toc_」で始まるようになります。
例えば、もともとのアンカーが「#sec1」だった場合、これが「#toc_sec1」に変更されます。
エラーの原因
見出しに数字が入るとプラグイン側で生成するアンカーがその数字になってしまいます。
例:見出し「4つの方法とは?」の場合、アンカーが「#4」となる。
アンカーの先頭に数字は使用できないためアンカーが動作しません。
したがって、アンカーの先頭が数字にならないようにするために上記ソースコードをfunctions.phpに追加しました。
参考にした記事
Table of Contents PlusのFAQ(英語)
https://dublue.com/plugins/toc/#Scenarios_FAQs
引用
For developers
How do I customise my anchors?
If you’re still not happy with the anchors, you can modify them to suit your needs through a custom function hooked into the
toc_url_anchor_target
filter. As an example, place the below code snippet into your functions.php file to convert all anchors to uppercase.function my_custom_anchor( $anchor ) { return strtoupper( $anchor ); } add_filter( 'toc_url_anchor_target', 'my_custom_anchor' );
アンカーをカスタマイズするには、toc_url_anchor_targetフィルターにフックされたカスタム関数を使用して、アンカーを変更できます。以下のソースコードをfunctions.phpに追加すれば、すべてのアンカーを大文字に変換することができます。というようなことが書いてあります。
まとめ
Table of Contents Plusプラグインは目次を自動生成する便利なプラグインである。
見出しに数字が入るとアンカーリンクが動作しないエラーが発生する。(2024年1月の情報なので今後のプラグインのバージョンアップで改善される可能性がある)
エラーが発生した場合は今回の記事で紹介したソースコードで対応してください。