Post Snippetsの使い方 変数を設定して使いまわせるようにする

2017年3月1日WordPress

 

WordPressでは投稿ページにPHPをそのまま使うことができないので、何らかの措置が必要になります。

かつてはexecPHPというプラグインで実行させている人も多かったのですが、セキュリティの観点から勧められなくなっています。

 

変わって使われているのが、スニペット管理用プラグイン「Post Snippets」です。

Post Snippetsは予めコードやHTMLといったテキストを登録しておくと、投稿ページにショートコードを貼るだけでそのコードを挿入することができます。

このPost Snippetsは優れもので、コードをそのまま挿入するばかりでなく、PHPとして実行させることもできます。

さらに変数を設定すれば、ショートコードから引数を渡すことができるため、一つのスニペットを使いまわすことができるようになります。

 

Post Snippetsインストールと使い方

Post Snippetsはプラグイン検索からインストールできます。

 

Post Snippetsポストスニペット

Post Snippets 公式

 

最初にやること

Post Snippetsでコードを挿入するには、あらかじめ設定画面でコードやテキストを作成しておく必要があります。

設定はツール ⇒ Post Snippets から行います。

 

左から順に〔コード名〕〔変数〕〔コード〕

Post Snippetsポストスニペット

 

変数は好きなものを使うことができます。上の例では『birth』にしていますが、なんでも構いません。

複数使いたければカンマ , で区切ります。変数に誕生日だけでなく名前も利用したければ、『name,birth』とします。

コード中でその変数を使うには、変数名を{}でくくって記入します。ここにショートコードで入力した引数が代入されます。

ショートコードにチェックを入れると、コード名をショートコードとして使うことができるようになります(上の例なら『age』が使えるようになる)。

ショートコードのオプションとしてPHPにチェックを入れると、PHPとして実行されます。コードは<?php ?>で囲む必要はありません。<?phpがあると逆に動かないので、むしろ不要です。

wptexturizeは文章の整形をする(正規化)ための関数なので、普段利用していないのなら必要はないでしょう。

 

コードを作成する

Post Snippetsポストスニペット

 

ここでは年齢計算のコードを入力しています。

date_default_timezone_set('Asia/Tokyo');
echo (int) ((date('Ymd')-{birth})/10000);

 

上のコードを使うと、引数として入力した生年月日から、現在の年齢が計算されて表示されます。{}は変数。

date()で本日の日付を20170228の形で取得します。そして20160221の形で入力した生年月日で引いてやります。1年違うと10000の差が生じるので、10000で割って切り下げれば年齢が算出されます(うるう年のことは考えていないので必ずしも正しくはない)。

 

コードを実際に使う

投稿ページや固定ページでは、ビジュアルエディタにPost Snippetsボタンが表示されます。

 

Post Snippetsポストスニペット

 

クリックすると登録済みのスニペット名一覧が表示されます。

 

Post Snippetsポストスニペット

変数を設定しているものなら、変数名とインプットボックスが表示されるので、引数を入力します。

 

Post Snippetsポストスニペット

 

最後にInsertすれば、引数付きのショートコードが挿入されます。

[age birth="19840214"]←ショートコード

40←結果

コードがうまく動かない場合

Post Snippetsではエラーの特定が難しいです。WordPressは予約語とのかぶりもあるので、PHPがうまく動かない場合は一つ一つ確認しながら原因を探すしかありません。

変数を使うのなら、変数無しで先に動くことを確認してから{}を加えていくと失敗が少なくなります。

 

小技

Post Snippetsでは変数を設定すると、ショートコード側の引数を省略することができません。動かないの。

変数の入力は必要な時だけにしたいのなら、 {} を ' クオーテーションでくくってしまえばOK。'{変数名}’になれば、ショートコード側の引数がなくても("")にしても、"という空の値が入ります。

文字列として扱われるので数字を使いたい場合は型変換をする必要があります。datatablesやchart系のプラグインを使うなら勝手に変換してくれますし、自分で使うなら(int)$変数名なりintval($変数名)で済むのでそれほど面倒はないはずです。

 

おしまいに

Post Snippetsを使うと、単にPHPを実行するばかりではなく、変数を利用してさまざまな場面で使うことができるようになります。

例えばincludeのスニペットもファイル名を変数にしておけば、ボタンをポチッとして引数としてファイルパスを入力するだけで好きなファイルを読み込ませることができます。

もちろんその他テキスト文章・HTMLの挿入にも使えます。

 

Post Snippets唯一にして最大の難点は、設定ページではこれまで入力したものが全てそのままの形で表示されてしまうことです。登録すればするほど長いリストになってしまいます。

そんな難点はありますが、とても便利で使いやすいプラグインです。