WordPressのカスタムフィールドで作っていたテキストエリアで部分的にボールドにしたいという要望がありました。
運用してる人的にHTML書いてくださいってのはハードル高そうだし、カスタムフィールドをWYSIWYGにするのは工数もかかるし自由に出来すぎるとwordみたいに超でかい文字とか原色みたいな色とかデザインルールに沿わないカオスが生まれそうなので避けたい。
ということで、マークダウン記法で変換させることにしました。
今回は手っ取り早くマークダウン変換できるライブラリを導入して対応することにしました。
Parsedown
composerでインストールでき、高速であるという事で、今回のようなシンプルな要件には良さそうだなと思いParsedownを使うことにしました。
インストール
composerでインストールします
$ composer require erusev/parsedown
WordPressから使う
テーマのfunction.phpに読み込ませます。
<?php // function.php // パスは適時変更してください require_once(__ROOT__ . '../vendor/autoload.php');
カスタムフィールドのテキストのマークダウンをHTML変換
<?php // function.php function get_custom_field_text($postID, $metaKey) { $Parsedown = new Parsedown(); // textareaの改行はそのまま改行にする $text = nl2br(esc_html( get_post_meta($postID, $metaKey, true) )); // Parsedown->lineでインライン要素のマークダウンをHTML化 $text = $Parsedown->line($text); return $text; }
はい。簡単にマークダウンが使えるテキストエリアのカスタムフィールドができあがりました!!
今回使ったParsedownはline()
メソッドを使えばブロック要素は無視してインライン要素だけマークダウン形式から変換できる様だったので機能を絞る意味でもマッチしていました。
表示速度に関しては、カスタムフィールドたくさん使っている箇所は予めキャッシュ化するようにしていたので分からないですが、簡単に導入して使えるのでとても良いライブラリだと思いました。
また、GitHubでコードを見るとライブラリ自体1つのPHPファイルでとてもシンプルなのでマークダウンの正規表現とかの勉強にもなりそうです!
運用者には「ボールドにしたい箇所を2重のアスタリスク**
で囲ってください。例 **ボールドにしたい文字**
」という感じで伝えました。
偶然マークダウン記法になって事故が起こる可能性は無きにしもあらず…なので
将来的には使用可能な記法を絞れるように、時間あるときにでもライブラリを読んで機能制限できるようにしてみようかなーとか考え中。
ホント、マークダウンのメリットってWordやWYSIWYGみたいに書く人によって文字がめっちゃデカくなったり、自由に色選べるから好き勝手な文字色や背景色で強調されたり、ティラノサウルスの3Dデータをぶっこまれたりしない。
決まったデザイントーンに則った表示になり文章のアウトラインが解りやすくなる。これに尽きると思うんです。
googleドライブで使える文章…ぜひマークダウンのドキュメントもプラグイン無しで作れるようにして欲しい… (もうあります?
[参考]
プラッツ ガールズ&パンツァー最終章 Mk.4戦車 大洗女子学園 サメさんチーム 1/35スケール プラモデル GP-40
- 出版社/メーカー: プラッツ
- 発売日: 2018/03/22
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る