functions.phpに自分でショートコードを書くこともあるのですが、そのたびにちょっと作り方を忘れてしまいます。今回は自分への備忘録も兼ねて「簡単にさくっとショートコードを追加する」手順を書きたいと思います。
phpinfoを表示するショートコードを作ってみる
サイトを作っていてサーバによって動きがおかしかったりするときにphpinfoで PHP の設定情報を確認したいときがあります。phpinfoを表示するとphpのバージョンや、mysqlのバージョン、その他メモリサイズや文字コードなども見ることが出来ます。同じ内容でもサーバによって値がことなるので、このサーバでは上手く行くのにどうしてこっちでは…?のようなときにもこの情報が役に立ちます。
どんな人にもこの情報が見えちゃうとまずいのでそこはちょっと制限を付けたいと思います。
phpinfoショートコードの仕様を考えてみました
ショートコードの名前(タグ名)を付けます。二重定義にならないように、私の場合は頭に ryus_ と付けたりします。なのでショートコードでphpinfoを表示するのは、ryus_phpinfoとしようと思います。
仕様、というと堅苦しいですが(^_^;、要するにどんな機能を持たせるかということを考えます。
もちろん、phpinfo()の値をreturnする、という機能なのですが先ほど書いたように誰にでも見られちゃうと困るので
・ログインユーザーであり なおかつ ユーザーの権限が管理者であるひとだけに値を返す
という機能にします。
functions.phpにショートコードを書く
ショートコードは子テーマのfunctions.phpに記述します。
ショートコードを書くパターンはいつも同じなのでちょっとひな形みたいなのを書いてみます。
/* ここにショートコードの関数を書く */ function 関数名() { /* ここに機能を書く */ return 返したい文字列; } /* ショートコードを追加する */ add_shortcode('タグ名', '関数名');
この
タグ名 というところに固定ページや投稿でショートコードとして使う名称を入れます。ryus_phpinfoという名前にしたのでこれを、固定ページや投稿で
[ryus_phpinfo]
このように書きます。そして関数名も決めて(今回思いつかなかったのでタグ名と関数名を同じ名前にしてしまいました)作ります。具体的にはこんな感じです。
/* 管理者でログインしている人にphpinfoを返す */ function ryus_phpinfo() { global $current_user; if(is_user_logged_in()){ if ($current_user->user_level == 10) { return phpinfo(); } } } /* 管理者にphpinfoを表示するショートコード */ add_shortcode('ryus_phpinfo', 'ryus_phpinfo');
これを子テーマのfunctions.phpに追加します。
ryus_phpinfoを使ってみる
投稿で
このように記述して公開します。管理者としてログインしているときは、
このようにphpinfoが表示されます。
ログインしているけど管理者で無いとか、ログインしていない場合は
、
このように何も表示されません。
まとめ:ショートコードは子テーマのfunctions.phpに関数とタグの追加を書くだけ
と、このようにWordPressのショートコードを作るのは子テーマのfunctions.phpに以下の2つを追加。
1.関数で追加したい機能を書く=タグの所に表示したい内容をphpで記述してreturnで返す
2.ショートコードを追記する=タグの名前と関数の名前を入れる
だけをしておけば、投稿や固定ページで
[タグ名]
と書くだけで実行できるのでとても簡単に作れて便利だと思います(^^)/
コメント