Shortcode Exec PHPプラグイン使わずにショートコードを使って自前でphpコードを記事の中で実行してみる

公開日| 2012年9月25日   更新日| 2012年9月25日   コメントはありません。

記事の中でphpコードを実行するrunPHPプラグインを使うも問題が…
記事の中でphpコードを実行するShortcode Exec PHPプラグインを使ってみる
にて、記事の中でphpコードを実行する runPHP プラグインについて解説しました。

今回は、後者のShortcode Exec PHPプラグイン を自前で作成する(プラグインを使わずに実現する)方法を簡単に解説してみます。

中上級者であれば、これって簡単なんです。ショートコードとfunctions.php を使えば簡単にできてしまいます。

今回は、Shortcode Exec PHPのインストールから、簡単な使い方まで解説してみたいと思います。

Shortcode Exec PHP をプラグインを使わずに実現するには

Shortcode Exec PHP をプラグインを使わずに実現するには、先に書いたように 使っているテーマの functions.php にphpコード を書けば良いだけです。
記事の中でphpコードを実行するShortcode Exec PHPプラグインを使ってみる で使った例を使って functions.php にphpコードを書いてみます。

  1. 使用している functions.php に phpコードを編集する。

    記事の中でphpコードを実行するShortcode Exec PHPプラグインを使ってみる の例

    1
    2
    3
    4
    
    extract(shortcode_atts(array('arg' => 'default'), $atts));
    echo "Hello world!" . PHP_EOL;
    echo "Arg=" . $arg . PHP_EOL;
    echo "Content=" . $content . PHP_EOL;

    上記の例を使っているテーマのfunctions.php で実現するには、以下のように書きます。

    functions.php の例

    1
    2
    3
    4
    5
    6
    7
    
    function hello_function($atts, $content=''){
    	extract(shortcode_atts(array('arg' => 'default'), $atts));
    	echo "Hello world!" . PHP_EOL;
    	echo "Arg=" . $arg . PHP_EOL;
    	echo "Content=" . $content . PHP_EOL;
    }
    add_shortcode('hello_world', 'hello_function');

    これだけです。2 行目 ~ 5 行目 までは、Shortcode Exec PHP をプラグインのサンプル hello_world と全く同じコードです。
    上位コードは、非常に簡単なコードです。一応、簡単に解説しておきます。

    1行目 : hello_function という名前で関数を定義しています。引数に $atts(ショートコードで指定されるパラメータ情報), $content(ショートコードで指定されるコンテンツ情報) を指定していることに注意してください。
    2行目 : $atts(ショートコードの入力情報) を $arg へ分割しています。
    3行目 : ‘Hello world!’ と出力しています。
    4行目 : $arg(1行目で入力情報’arg’の値を保存した変数) を出力しています。
    5行目 : $content(ショートコードのコンテンツ情報) を出力しています。
    7行目 : add_shortcodeでショートコードの登録を行っています。ショートコード名 hello_worldで対応する関数をhello_functionとしています。

    続けて、今度は記事のどのように埋め込むか書いてみます。


  2. 適当な記事でショートコードを埋め込み、phpコードを実行してみます。

    記事に埋め込むコードは、Shortcode Exec PHPプラグインと全く同じになります。一応、同じですが、以下に記載しておきます。
    ( 参照 : 記事の中でphpコードを実行するShortcode Exec PHPプラグインを使ってみる )

    先のhello_world という名前の Shortcode (PHPコード)を実行したい適当な記事の編集画面を表示します。
    記事にShortcode Exec PHPを埋め込む
    上記のように [] でショートコード名を括って実行します。
    サンプルソースコード である hello_world という名前の Shortcode を実行する場合、以下のように書くことができます。

    1
    2
    3
    
    [hello_world arg="ほげほげ"][/hello_world]
    [hello_world arg="ほげほげ"]のろのろ[/hello_world]
    [hello_world][/hello_world]
    ショートコード書式
    [ショートコード名 パラメータ]コンテンツ[/ショートコード名]
    
    パラメータ: $atts へ array形式で渡されます。
    コンテンツ: $content へ string形式で渡されます。

    上位の記事を実行すると以下のように表示されます。

    記事内のShortcode Exec PHPの実行結果

    上記の出力結果を簡単に解説しておきます。

    1行目 : 入力パラメータに’ほげほげ’を渡していますので、Arg=ほげほげと出力されています。
    2行目 : 1行目に加えてコンテンツに ‘のろのろ’ を渡していますので、Arg=ほげほげContent=のろのろと出力されています。
    3行目 : 入力パラメータもコンテンツも渡していません。Arg=default とデフォルトの値が出力されています。

    と、全く同じ結果を得ました。


Shortcode Exec PHPプラグイン は、ブラウザで何でもできるという便利な面、中上級者にとって回りくどい?ような感じもするところですね。

セキュリティ的にどうか?というと、Shortcode Exec PHPプラグイン 以上での以下でもないと思います。基本的にテーマを編集できる権限があれば、phpコードを編集できます。 実行する権限は、全てのユーザにて実行できます。先の関数にセキュリティホールが無ければ、 テーマの編集権限がなければユーザ、パスワードを盗まれも少なくともこのショートコードで被害が拡大することはないかなというところです。

runPHPだと、記事の編集権限があれば被害が拡大することもありえますから、その点では、セキュアといえなくもないかなと思います。

結局、テーマの編集権限が盗まれてしまえば、このやり方云々じゃなく、ほとんど何でも盗まれてしまうので、セキュリティも何もないと思います。

ユーザパスワードの管理とWordpressのバージョンは、常に最新にしておきましょうね。


コメント

口コミ・評判を投稿 :

ブラウザの JavaScriptが無効となっている場合、コメントの投稿はできません。
コメントを投稿するには、JavaScriptを有効にしてください

お名前 *

メールアドレス *
(口コミ・評判欄には、表示されませんが入力が必要です。)

サイトアドレス



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ