なんとなく自分のサイトをチェックしていたら、固定ページでPHPを仕込んだページが表示されません。
いったいなぜ???
PHPのコードを実行するために下記のコードをfunctions.phpに仕込んでいるのですが、require_onceで読み込んでいるphpコードの出力が一切無視されてしまいます。
function Include_my_php($params = array()) { extract(shortcode_atts(array( 'file' => 'default' ), $params)); ob_start(); //include(get_theme_root() . '/' . get_template() . "/$file.php"); require_once("$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
原因は不明です・・・。(–;
調べるのも面倒だったので回避するためにコードを書き換えました。
require_onceの引数「$file.php」が読み込みできていないだけかもしれません。
PHPのエラーメッセージが画面やログに出ない設定になっている場合は、エラーが起きていることにも気づきません。
エラーを出力する設定に変えて試すか、require_onceの引数には「/var/www/html/test/file.php」など、読み込む対象のファイルのフルパスを引数で与えると解決するかもしれません。
$fileはきちんと読み込んでいるのです。
ob_start()で標準出力をメモリ上に展開するのですが$fileで読み込んだPHP内部ではこれが一切無視されて出力されなくなっているのでした。
もちろんこの関数の中でechoすると画面に表示されます。
ソース上で確認するのはめんどくさいので、コード書き換えて回避しました。