WordPress でプラグイン使わずにウィジェットで PHP コード動かす
WordPress のテキストウィジェットで PHP コードを書けるようにするプラグインとしては、
などがあるが、、、
これらは、セキュリティ上危険なために嫌われている eval() という言語構造が使われている。
そして eval() は、ネイティブな PHP よりも動作が約 20 倍遅いという特徴があるw
ぶっちゃけ、eval() が許容できるのであれば、プラグインなんぞ使わんでも簡単にできる。
が、ここでは、あえてその方法は紹介しない。
なので、eval() もプラグインも使わず、もう少し安全で、なおかつ速度も出るようにウィジェットで PHP コード動かす方法を考えてみた。
やり方
とりあえず、やってみた方法。以下、その手順。
動かしたい PHP を書いたファイルを用意しておく
まず、ウィジェット内に書きたい内容の PHP ファイルをテーマディレクトリ(functions.php と同じ場所)に用意しておく。
ここでは、仮に ahoaho.php というファイルを用意して、中身は ↓ こんな感じにしておく。
<?php
echo 'あほです (`・ω・´)b';
functions.php
functions.php に以下を追加。
'ahoaho' の部分は、上記ファイル名の .php を除いた名前。
※ PHP 5.3 以上のみで有効な書式で書いてます。
add_filter( 'widget_text', function( $ret ) {
$php_file = 'ahoaho';
if( strpos( $ret, '[' . $php_file . ']' ) !== false ) {
add_shortcode( $php_file, function() use ( $php_file ) {
get_template_part( $php_file );
});
ob_start();
do_shortcode( '[' . $php_file . ']' );
$ret = ob_get_clean();
}
return $ret;
}, 99 );
テキストウィジェット
WordPress のテキストウィジェットに上記のショートコード [ahoaho] を書いて保存する。
出来上がり
以上。
ディスカッション
コメント一覧
るなさま初めまして。
こちらの記事を見て PHP Code Widget を使わずに
ウィジェットで PHPを実行できるようになりました。
危険だと知らずに使っていたので、大変助かりました。
ありがとうございました。
ピンバック & トラックバック一覧
[…] WPテーマ Luxeritas の作者さんは非推奨。 詳しくはこちら → WordPress でプラグイン使わずにウィジェットで PHP コード動かす […]