Pocket

毎回使うタグを登録しておきたい

データの移行をしていてどうしても手入力で記事を移動しなければいけない事案が発生して、せっせと移していたのですが、毎回同じタグ書くのが面倒…。基本、投稿のエディタはテキストモードでコーディングするのですが、タグを挿入できるボタン(クイックボタン)を追加したいと思い調査。さすがWordPress、APIがある。

WordPressクイックタグ

クイックタグAPI

クイックタグAPIを使って追加してみます。Codexのリファレンスの例を少し改造して、一つだけボタンを追加。テーマのfunctions.phpファイルに以下のコードを追加しました。

出てきた!\(^o^)/

WordPressクイックタグを追加

おそろしくあっさり出てきたんですけど。ポイントは2行目と4行目。2行目はスクリプトキューにquicktagsが存在するかチェックをして、JavaScriptのQTags.addButton()メソッドで追加か。引数は以下の通り。クイックタグAPIリファレンスより引用。

パラメータ 必須/オプション 初期値 説明
id string 必須 なし html ボタンのid
display string 必須 なし html ボタンの値
arg1 string 必須 なし 次のように挿入する開始タグ “<span>” もしくは、ボタンがクリックされたときに実行されるコールバック。
arg2 string オプション なし “</span>”などの最後のタグ、閉じタグが不要な場合は空にします。 (つまり “<hr />”).
access_key string オプション なし ボタンのショートカットアクセスキー
title string オプション なし html ボタンのタイトルの値
priority int オプション なし ツールバーのボタンの希望する順番を表す数値。. 1 – 9 = first, 11 – 19 = second, 21 – 29 = third, など。
instance string オプション なし Quicktagsの特定のインスタンスにあるボタンを制限し、 存在しない場合はすべてのインスタンスに追加します。

HTMLは以下のように出力されました。

なるほど、ボタンを出す場所も指定できるのか。固定ページのテキストエディタにも追加されている。グローバル変数の$pagenowで分岐処理を挟めば投稿ページのテキストエディタだけ、固定ページのテキストエディタだけとわけれそう。これプラグインにできそうだな。勉強がてら作っちゃおうかなぁ。

追記:クイックタグの開始・終了タグに改行を入れたい

プラグイン化するにあたって、開始・終了タグの入力をテキストエリアにしました。当然改行コードが入るんですけど、そのままJavaScriptに値をセットするとソース内で改行されてしまい、JavaScriptがエラーがこけた。(JavaScriptは改行で処理終了判断をするため)
そこで、以下のように変換・設定してあげればうまくいきました。

改行コードを\nとして文字列結合してあげればOK。