WordPressの投稿・固定ページにPHPを利用する方法。

wordpress でPHPを利用できるようにする

WordPressの投稿記事やページでPHPを実行するプラグインExec-PHPの危険性

WordPressの投稿記事やページでPHPを実行するプラグイン、Exec-PHP。
以前は使用していたのだけれど、調べているといろいろ不安な記事が出てくる。

エディタ内でphpを実行できるようにしてしまうことが非常に危険であるということ。
ちょうど数ヶ月前に仕事で作ったページのCGIをハッキングされて、サイトを改ざんされてしまった経験があり、今までは、ハッキングなんて人ごとだと思っていたのだけれど、その恐ろしさを実感してしまった・・・。

ショートコードで作ったPHPをincludeする

functions.phpにショートコードを使えるようにするPHP文を追記

記事内/固定ページ内にphpファイル(任意のファイル)を読み込ませるには、ショートコードを使います。
まずはそのショートコードを有効にするために、テーマ内(hoge.com/wp-content/themes/使用しているテーマ/)のfunctions.phpに以下を追記する。

<?php
 
//ここから
function Include_my_php($params = array()) {
    extract(shortcode_atts(array(
        'file' => 'default'
    ), $params));
    ob_start();
    include(get_theme_root() . '/' . get_template() . "/$file.php");
    return ob_get_clean();
}
 
add_shortcode('myphp', 'Include_my_php');
//ここまで
 
?>

phpファイルをテーマファイル内にアップロード、記事内にソースコードを記述

作成したphpファイル(sample.php)を作成し、テーマファイル内(例:hoge.com/wp-content/themes/使用しているテーマ/)にアップします。
投稿・固定ページ記事内のphpを読み込ませたい箇所に以下のタグを記述。(ファイル名がsample.phpの場合)
myphp file=’sample’

phpファイルをフォルダにまとめたいとき

複数のphpファイルがある場合はフォルダにまとめて置くと便利です。
フォルダ内(hoge.com/wp-content/themes/使用しているテーマ/sample/)のphpを読み込む際、functions.phpの記述例

include(get_theme_root() . '/' . get_template() . "/sample/$file.php");

参考にさせていただいたサイト様

他にもプラグインを作っちゃうという方法もあるようです。が、まだまだひよっこなので、それはまた今度挑戦してみます。