WordPressのテーマ「Arkhe」を使用しているサイトで、記事一覧ページの抜粋文字数を変更しようとしたところ、思わぬところでつまずいたので、共有しておきます。
カスタマイザーで変更しても反映されない?
クライアント様から「記事一覧の抜粋文字数をそろえたい」というご要望をいただき、Arkheの管理画面(カスタマイザー)にある抜粋文字数の設定を変更しました。しかし、なぜか抜粋がまったく変わらない……。
「おかしいな?」と思い、確認してみると、どうやら投稿に手動で抜粋が入力されている記事があったのです。WordPressは手動抜粋が指定されている場合、そちらを優先して表示する仕様のため、カスタマイザーで設定しても反映されなかったわけですね。
テンプレートを修正して対応
Arkheでは、手動抜粋がある場合、そのまま the_excerpt()
を使って出力されています。抜粋文字数を強制的に調整するため、子テーマ側でテンプレートを編集して対応しました。手順は以下のとおりです。
the_excerpt()
の部分を修正する
もともとは以下のようになっていました。
Arkheの子テーマに、抜粋部分のテンプレートファイルをコピーする
テーマフォルダ内の該当ファイルはarkhe_child/template-parts/post_list/style/normal.php
として用意しておきます。
<?php the_excerpt(); ?>
このままだと、手動抜粋が入力されている場合はそのまま全文が表示されてしまいます。そこで、以下のようにコードを変更して、取得した抜粋を好きな文字数でカットして表示させるようにします。
<?php $str = get_the_excerpt();
echo mb_substr($str, 0, 40, "UTF-8");
?>
- 上記では例として40文字でカットしています。お好みの文字数に変更してください。
まとめ
- Arkheのカスタマイザーから抜粋文字数を変更しても、投稿に手動抜粋がある場合は反映されない。
- 手動抜粋を強制的に文字数調整したい場合は、子テーマで該当テンプレートを修正して
get_the_excerpt()
を任意の文字数で出力するようにする。
Arkheはカスタマイザーから設定できる項目が多く、便利な反面、WordPressの基本仕様(手動抜粋の優先度)に気づかずハマってしまうことがあります。もし同じような現象に遭遇した場合は、投稿に手動抜粋が入力されていないかどうかを確認し、必要に応じて子テーマ側でカスタマイズしてみてください。