ウェブコーディング

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ファイルかを指定するコードです。

PHPの基本的な文法と変数のまとめ前のページ

PHPなどのプログラムコードをUTF-8で保存するときの注意点次のページ

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

tipLog

関連記事

  1. ウェブコーディング

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

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

  2. ウェブコーディング

    意外と重要なCSSのidとclassを使い分け

    WordPressテーマを作ったり、ホームページを作ったりするとき、間…

  3. ウェブコーディング

    PHPで配列と文字列の変換をデータベースに応用する方法

    データベース検索などを利用するときに、$_POSTや$_GETで受け取…

  4. ウェブコーディング

    WordPressのテーマ・テンプレートのディレクトリを取得する方法

    WordPressのカスタマイズをするとき、親テーマと子テーマのどちら…

  5. ウェブコーディング

    プラグイン不要!2ステップで完了!「FontAwesome」をWordPressに導入してアイコンを…

    ブログのカスタマイズをするとき、必要なアイコンをいちいち画像化して、フ…

コメント

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

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

CAPTCHA


スポンサードリンク

スポンサードリンク

inkscapeを学ぶ

Inkscapeの入門書

カテゴリー

ピックアップ記事

  1. ブログやサイトの作り方

    月額100円から使える「ロリポップレンタルサーバー」
  2. 特集

    inkscapeの使い方を集めたスキルアップのための日本語チュートリアル集
  3. 特集

    無料でクオリティが高く、検索機能が利用できる画像素材サイト3選
  4. ブログの収益化

    報酬の受取に苦労してません?初心者でもAmazon・楽天のアフィリエイトで効率的…
  5. グラフィックデザイン

    自作?外注?その前にコレ!ブログのロゴデザインをするなら「Logaster」を使…
PAGE TOP