例えばこんな感じ
URLを記述すると、https://nplll.com/2022/01/upgrade-to-windows11/
自動的に変換されてこんな感じで表示されます。
Windows 11 にアップグレードしてみたら思いのほか簡単だった
Embedの不具合
ところがこの仕組みがなぜかうちのブログでは上手く動かなくて、次のような問題がありました。<!--more-->
タグを無視して本文が全部表示されてしまう
これさえなかったら便利に使えるんですけどねえ……というわけで調整。
カスタマイズの基本
embed周りのファイルはWordPressの以下の場所にあります。wordpress/wp-includes/theme-compat
このうち、以下のファイルをテーマフォルダに置けばカスタマイズして上書きできます。
- embed-404.php
- embed-content.php
- embed.php
- footer-embed.php
- header-embed.php
が、今回はそこまでデザインを変えないのでこの必要はありません。
the_excerpt_embed()
を差し替えれば終わりです。テーマフォルダ/functions.php に以下を追加
add_filter('the_excerpt_embed',function() {
$post = get_post();
echo array_shift(explode('<!--more-->', $post->post_content));
echo '';
});
<!–more–>で分割する部分は、本当はちゃんとした関数があります。
投稿本文を で区切った内容を各々取得します。戻り値は main と extend のキーからなる連想配列です。main キーの配列には より前の本文、extend キーの配列には より後の本文が入っています。
関数リファレンス/get extended – WordPress Codex 日本語版
しかしこれもなぜかうちの環境では上手く動かなくて、<!–more–>2個以上セットしないと分けてくれませんでした。なぜだ。というわけでわざわざ実装してます。
なんかいろいろ上手く動かないことあるんですけど何がダメなのかなあ。WordPressの本はたくさんあるけど、デザインとかそういうのばっかりで中身をがっつり解説した本ってのはないのね。いや本じゃなくてドキュメントでも良いんだけどいまいちわかりにくいんですよねー
こういうの読めば良いのかな