チュートリアル

WordPressの記事内でPHPを実行した結果を表示する方法

WordPressの記事内でPHPを実行できると、記事に表示できるコンテンツの幅が増えます。

今回はPHPソースコードの実行例を記事内に表示する方法をまとめました。

記事内でPHPが実行できることによるリスク

はじめに今回の方法を取ることによるサイトのリスクをちょっとだけ。

まず、記事内でPHPを実行する方法には3つあります。

  • プラグインを使う(Exec-PHP、runPHP)
  • functions.phpの修正で記事内でのPHP実行
  • functions.phpの修正でショートコードを使う

プラグインを使う方法とfunctions.phpの編集で記事内PHPを使えるようにする方法は、どちらも記事編集画面で直接PHPを入力できるようにする方法です。

ショートコードを使う方法は記事編集画面ではPHPを記述することはできませんが、PHPファイルをサーバーにアップしておいて、記事内でショートコードを利用してアップしたPHPファイルを読み込む方法です。

自分の認識違いでなければ、記事内で直接PHPスクリプトが実行できる状態は、少なからずサイト改ざんなどのサーバー攻撃の危険が増すことになります。

その為、今回採用したのはショートコードを利用する方法です。

記事内で直接PHPを編集・実行できませんが、セキュリティ上はプラグインを利用したり直接実行できるようにするより安全です。

PHPファイル用のフォルダを用意する

ショートコードで呼び出すPHPファイルを保管しておくフォルダを作成しておきます。

基本的にフォルダ名はなんでもいいのですが、ここでは「myphpfiles」としておきます。

FTPソフトを使って、現在使用しているテーマフォルダの直下にフォルダを作成します。

/wp(WordPressインストールフォルダ)
   ├ /wp-admin
   ├ /wp-content
      ├ /languages
      ├ /plugins
      ├ /themes
         ├ /your-theme(使用しているテーマのフォルダ)
            ├ /myphpfiles  ←  ここに作成

functions.phpの編集

ショートコードを利用してPHPファイルの読み込みができるように、現在使用しているテーマフォルダ内のfunctions.phpに以下の記述を追加します。

// 記事内にphpファイルをインクルード 
// ショートコードの書き方 [myphp file='test']
function Include_my_php($params = array()) {
    extract(shortcode_atts(
        array('file' => 'default'),
        $params
    ));
    ob_start();
    include(get_theme_root() . '/' . get_template() . "/myphpfiles/$file.php");
    return ob_get_clean();
} 
 
add_shortcode('myphp', 'Include_my_php');

2行目まではコメント行なので、自分でfunctions.phpを見たときに何が書いてあるか分かれば何でもいいです。

子テーマを利用している場合は下記を使って下さい。

// 記事内にphpファイルをインクルード
// ショートコードの書き方 [myphp file='test']
function Include_my_php($params = array()) {
    extract(shortcode_atts(
        array('file' => 'default'),
        $params)
    );
    ob_start();
    include(get_stylesheet_directory_uri() . "/myphpfiles/$file.php");
    return ob_get_clean();
} 
 
add_shortcode('myphp', 'Include_my_php');

子テーマの場合は、子テーマのスタイルシートがあるディレクトリを参照するようにしてあります。

これらの記述箇所はわかりやすく問題になりにくい、functions.phpの一番下に記載します。

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

これは親テーマのフォルダを指定する記述で

include(get_stylesheet_directory_uri() . "/myphpfiles/$file.php");

これは子テーマのフォルダを指定する記述です。

PHPコードの実行

記事内でPHPコードを実行するには、実行したい内容を記述したPHPファイルを「myphpfiles」へアップロードします。

今回は試しに次のコードをテキストエディタで作成して、「test.php」と言う名前にして保存します。

<?php
$test = "テスト";
 
$doc = <<< EOM
これはPHPファイルを実行した $test 結果です。<br>
\$test の部分が「テスト」と表示されていれば、
正しく実行されていることになります。

EOM;

echo $doc;
?>

保存した「test.php」をFTPソフトで「myphpfiles」へアップロードします。

記事の中でこのPHPファイルを実行するには次のショートコードを記載します。

[myphp file='test']

「myphp」とはfunctions.phpで定義した関数を呼び出すときのコードです。

「file=’test’」はフォルダ内のどのPHPファイルかを指定するコードです。

記事が気に入ったら
tipLog を "いいね!"
Facebookで更新情報をお届け。

tipLog

WordPressテーマ

WordPressテーマ「MAG(TCD036)」

スポンサードリンク

関連記事

  1. ウェブコーディング

    WEB言語を手を動かして1から学べるサイト

    HTML・CSS・PHPなどのウェブ系の言語をどれくらい理解しているで…

  2. チュートリアル

    「とあるのロゴジェネレーター」を参考にinkscapeでロゴをリメイク

    「ロゴ作成の勉強ってどうやってすればいのー?」と、よく自分でも考え…

  3. 素材

    手作業は最小限で!inkscapeで「カラフルなドットパターン」の作り方【SVG/PNGサンプルあり…

    「ドットパターンを作る」って聞いて、難しく感じる人が多いような気がする…

  4. チュートリアル

    GIMPでトリミング画像に影をつけてサクッと立体感を生み出すチュートリアル

    写真から切抜きした画像単体では、立体感がなく物足りないような印象を受け…

  5. WordPress

    関連記事を表示するWordPressプラグイン「Yet Another Related Posts …

    WordPressの関連記事というと、タグやカテゴリーから関連性を決め…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


スポンサードリンク

ピックアップ記事

おすすめの本

使用している素材

カテゴリー

 
PAGE TOP