htmlエディタのクイックタグの追加
前のページ、「[caption]ショートコードとpタグの問題」において、途中、いきづまってcaptionの使用をやめてショートコードにて代用しようと思った時に、それならばショートコード自体の入力をなんとか楽にすることはできないものかと、ふと思いついたのがこのhtmlエディタのクイックタグ。
ここに新規にボタンを登録できないものだろうかとネットを探して見ると、やはりちゃんとそういうことが出来るようになっているのですね。
直接、/wp-includes/js/quicktags.jsを編集する方法とfunction.phpに関数を作る方法があります。
ちなみにこれができるプラグインもちゃんとあります。
wordpressのバージョンアップの事を考えるとシステムファイルを直接いじるよりも、関数を使った方が後々の事を考えると手間がかからずよいですね。
と、いうことなんですが、随分あとになって再びクイックタグを追加しようということになって、あれまぁ!と気がついたので、このあとその後日追記。
« 2020/5/22 追記: & 2022/05/25 加筆 : »
長らくお世話になっていたCrayon Syntax Highlighter といよいよお別れしようということになって。しかし、新しく使うことになったものは投稿への入力などは全く面倒見てくれず、そのときにエンティティなど施さなきゃならないことや、付加すべき指定されたタグのパターンなんてのもまず間違いなく忘れてしまいそうだし。と、いうことでこれもクイックタグに登録してしまえば便利で楽ちん、ということなったわけです。
で、改めてどうやるのかとwp-includes/js/quicktags.jsを見直していると、なんだかちょっと書式が違っていたりする。で、説明書きを読んでいたりすると、今ではやり方が違っているようで。クイックタグを登録するための関数があって、もっと簡単にできるようになっていると・・・。
と、今一度、この投稿を見直していると、嘘のような事実に気がついてしまったわけで・・・。クイックタグを簡単に登録できる関数は、あとになってできたものではなくて、この記事を書いていた当時からちゃんとあったものだと。その説明書きをちゃんとこの記事に載せていたではないか、と。そのJavascript の関数をアクションフックをつかって、php からjavascript を直にフッターにエコーさせろ!と書いてある。なんてこった!
まぁ、その当時はまだその意味がよくわからなかったのですね~、ざんねんですうっ~!
その説明書きは、このちょっと下の方にある古いもの「function for adding a button to Quicktags」とほんの少し違っている部分もありますが、ほぼ書いてあることは同じなのでそちらを。
と、いうことで →codex を参考にしてと。
そして WordPress が 6.0 になったら、QTags が定義されていない、というエラーが出るようになった。これは単純なことでスクリプトの読み込まれる順番が変わってしまったことによるもの。であるから、下のスクリプトに オンロードイベントを追加してあります。
17行目はボタンに関数を登録する場合のもの。コールバック関数の登録において、うっかり間違えそうなのは関数名にはクォートは必要ないこと。そしてその下はそのコールバック関数自体。
これだけでいいんですね。別にファイルを作ってアップロードする必要など無かったわけでした。実に簡単、簡潔です。ただこれだけのためにプラグインを使うというのもなんだかもったいないような気もしないでもない。何においても、functions.php のバックアップだけは怠り無く!
と、いうことなのでこの下の部分は必要ありません。(あっ!ちょっと下にある説明書きのところは必要かも?)
ただ、自分が自虐的に残しているためのものにすぎません。
とは言っても、2020/5/21 の時点においてもちゃんと機能はしていたのですけれど。あしからず。
・・・
が、とりあえず理解しやすいファイルを直接編集する方法から。
対象のファイルは/wp-includes/js/ディレクトリにあるquicktags.jsファイルです。
このディレクトリには似た名前のファイルでquicktags.dev.jsというファイルがあります。
前述の.devの無いファイルは改行、タブ、スペースなど不必要なものが削除され、ファイルサイズを小さくしてあり、ファイルの内容を編集しようとする者にとってはとても見づらい状態になっています。
一方、.devの付いている方は、改行もインデントもスペースもあり編集しやすい状態にあります。
いくつかのページで.devのファイルを編集したのち、.devをとってリネームし、アップロードすればよいとの記述がありました。
.devは開発者の意味のdeveloper用ということだと思いますがいかがでしょうか。
ただ、ちょっと細かい内容が異なる部分があるので、私は.devの無い方(これが実相)のファイルを、必要な部分だけ読みやすいように改行を付けた後、編集しアップしました。
いざ、quicktags.jsの中身を見て見ます。
編集する部分はファイルの一番最後にあります。
そのままデフォルトでついているボタンが並んでいるのでわかりやすいです。
書式はというと、読みやすい.devファイルで探して見ると68~70行目に、
とあり、そのまま見て行くと、280~303行目あたりに説明書きがあります。
これにより引数の意味するところがおおよそわかります。
いまひとつ不明なのがaccess引数ですが、ネットでは指定しなくてもいいと書いてあるページもありました。
調べてみるとこれはいわゆるアクセスキーです、ってそれじゃそのままか。たしかショートカットキーとかいうのでは。
良く見ると一番下の行、関数の引数部分がちゃんとaccess_keyとなってますね。
私の使っているFirefoxですと、alt+shift+アクセスキーでキーボードでボタンをフォーカス状態にできます。
フォーカス→エンターキーで入力ですね。
アクセスキーに関して詳しくはこちらをどうぞ»Access key from Wikipedia
最低限必要な引数はid、display、tagStartの3つと書いてあるのでaccess_keyも省略可能です。
で、参考までに私が追加したのが以下のコードです。
ちなみに、一番最後のescapeは、「SyntaxHighlighterがつかえない!」で作った、簡単な文字列を手軽にエスケープするためのショートコードを入力するためのものです。"["、"]"のエスケープが出来なかったのでここだけ表示用に全角にしてありますが、実際は半角です。
これらのボタンの書式を編集したい場合は、/wp-includes/css/ディレクトリにあるeditor.cssファイルです。
このファイルにも同じように.dev付のファイルが存在します。
こちらのファイルは内容も同じ様なので、読みやすい.dev付を編集してリネームした後、アップしてもよいかと思います。
quicktags-toolbarでファイル内を検索すれば、関連する部分がすぐに見つかります。
一例として、私が手を入れた部分のcssです。
各要素は引数idではなくdisplayの値で指定していますね。なんか不思議?
以上で、動作しています。
くれぐれも元ファイルのバックアップをお忘れなく。
あと、データを追加するときに最後のカンマの有無にご注意を。
・・・
そして、function.phpに関数を作る方法です。
こちらも、とりあえずネットから取ってきたほとんどそのままの内容ですが。
流れとしては、追加するボタンをjsファイルで指定し、それを関数で読み込ませて登録するという感じです。
それではjsファイルの内容から。
add_quicktags.js
そしてfunction.php内に記述する関数は、
アクションフックを使って登録するわけです。
この場合のjsファイルはテーマと同じディレクトリにアップしてあります。
まぁ、こちらの方が実際の手間も少なくて済むかもしれません。
書式を変更する場合のcssファイルは同じです。
これはとても便利です。
いままで手打ちしていたpタグや、ショートコードで入力していた部分もボタンを押せば一発です。ただ知らなかったというだけで随分面倒なことをしていました。
これでますますwordpressが好きになりましたね。
Post : 2012/10/05 00:59
Comments feed
Trackback URL : https://strix.main.jp/wp-trackback.php?p=25077