1/24 - サイトを「https://wm-oboegaki.com/」から「https://blog.vtuber-ch.com/」に引越ししました。ブックマークの変更をお願いします。 (お知らせ一覧)
Home WordPress WPカスタマイズ WordPressのエディタでPHPとJSコードを扱えるようにする方法

WordPressのエディタでPHPとJSコードを扱えるようにする方法

WordPressのエディタでPHP使用方法の画像

 WordPress[※]の管理ページにある「記事投稿」「固定ページ」「ウィジェット」の編集ページ(エディタ内)で使用できる言語はHTML[※]のみとなっています。しかし、PHP[※]やJS[※]などのプログラミング言語を使用しないと出来ない処理が多数あります(条件分岐や独自パーツ使用など)
 そこで、テーマディレクトリ内にあるfunctionsファンクションズ.phpにコードを追加して、WordPressのエディタでPHPとJSを扱えるようにします

WordPressエディタの画像
WordPressワードプレス
WordPress Foundationワードプレス ファウンデイションによって開発されたオープンソース ブログプラットフォーム。プログラム言語がわからなくても管理画面からサイトやブログの作成が可能。
HyperText Markup Languageハイパーテキスト マークアップ ランゲージ (HTMLエイチティーエムエル)
Webサイトのコンテンツを作成するために使用される言語でマークアップ言語の1つ。
PHPピーエイチピー
The PHP Groupザ ピーエイチピー グループによって開発されたプログラミング言語。主にWebサイト制作に使用され、サーバー側で処理される。
メリット:サーバー側で処理するためユーザー側の設定が必要ない(ユーザー環境に左右されにくい)。また、ユーザーはプログラム処理後のコード(HTML)しか見ることができないためPHPコードの盗用も防止にもなる。
デメリット:サーバーで処理されるのでサイト表示後の処理はできない(JSなどブラウザなどで処理するプログラム言語ならば可能)
JavaScriptジャバスクリプト (JSジェーエス)
Brendan Eichブレンダン・アイク氏によって設計されたプログラミング言語。WebサイトやWebアプリなど様々なプログラムに使用でき、クライアント側(ブラウザなど)で処理される。
メリット:クライアント側で処理するためサイト表示後の処理が可能。
デメリット:クライアント側で処理されるためユーザの環境によっては動かない(JSオフ設定など)

目次

WPのエディタに使用可能言語追加

 WordPressのエディタでPHPとJSを扱えるようにするため、WordPressに独自ショートコード[※]を追加します。独自のショートコードを記述することで、自作のPHPコードやJSコードがエディタのショートコード記述した位置に挿入されます。

ショートコード
WordPressの機能の1つで、角括弧([])で囲まれた特定の文字列によって、コードを呼び出すことができる機能。テーマによって使えるショートコードが違う。独自に作成することもできる。
例:[[gallery ids="0000"]]

WPに独自ショートコード追加

 WordPressで、現在使用しているテーマディレクトリ(/wp-content/themes/使用中のテーマディレクトリ/)にある「functions.php」を直接開くか、テーマファイルエディタを使用して下記のコードを追加してください。コードを追加するとWordPressでPHPとJSを使用するための独自ショートコードが使用可能となります
(画像はCocoon[※]の子テーマに追加した場合の例)

add_shortcode('php', function($atts) {
    ob_start();
    include(STYLESHEETPATH . "/php/{$atts['filename']}.php");
    return ob_get_clean();
});
Cocoon functionにコードをコピペの画像
Cocoonコクーン
検索エンジン対策・高速化・モバイルフレンドリーに最適化した無料テーマ。
「functions.php」の記述を間違えるとサイトが表示できなくなります。表示されなくなった場合は、すぐに元の状態に戻してください。
WordPress関数「shortcode_atts」を使用すると、ショートコードに引数が指定されていない場合の、値を設定できますが、今回は必要がないので使用しません。詳細は「コード解説」で説明します。

WPのエディタでPHP使用方法

テーマディレクトリ内にphpディレクトリを作成します
(例としてCocoonの子テーマディレクトリ内に作成します。)
Cocoon子テーマ内にサンプル作成の画像
作成したPHPディレクトリ内に、任意の名前の「PHPファイル」を作成します作成したPHPファイルにPHPやJSのコードを記述します
(例として、ファイル名を「sample.php」、内容を下記のコードとします。)
<!-- sample.php -->
<p>
<!-- PHPコード -->
<?php
echo "PHPを使用できます。<br>";
?>

<!-- JSコード -->
<script>
window.onload = function(){
    document.getElementById("js").innerHTML = 'JSも使用できます。<br>';
}
</script>
<span id="js"></span>

<!-- HTMLコード -->
もちろん、HTMLも使用できます。<br>
</p>
PHPファイル名にはアルファベットを使用した任意の名前をつけてください。
エディタのPHPやJSのコードを、挿入したい位置にショートコードを記述します
[php filename='ファイル名']
ショートコードを記述後、サイトに記述したコードどおりの表示が確認できれば完了です
Cocoon子テーマ内にサンプル作成の画像

使用可能言語追加コードの解説

 「functions.php」に追加したコードの仕組みは、PHPディレクトリ内にPHPやJSなどのプログラムを記述したPHPファイルを作成し、そのファイルをエディタのショートコードに記述することで、プログラムを呼び出します

独自ショートコード追加方法の解説

add_shortcode(‘php’, function($atts) { ← 文字列「php」で呼び出せるショートコードを追加

ob_start(); ← バッファリングON

include(STYLESHEETPATH . “/php/{$atts[‘filename’]}.php”); ← PHPファイル読み込み

return ob_get_clean(); ← バッファリングOFF、バッファ取得、バッファ削除

});

WordPressエディタでPHP使用コードテストの画像
このコードでは、引数がない場合を考える必要がないのでWordPress関数「shortcode_atts」は使用していません(独自ショートコードを作成する場合はよく使用されます)。「shortcode_atts」使用した場合は、事前に引数を記述しなかった場合用のデフォルト値を指定しておくことで、引数がなかった場合でもデフォルト値のコードを呼び出すことができます。
例:[php] → [php filename=’default’]

使用したPHP構文の解説

 今回、コード内で使用したWordPressやPHPの構文を簡単に説明します。詳細な説明は「PHP公式」から確認してください。

【ジャンプ】add_shortcode▼ function▼ include▼ ob_start▼ ob_get_clean▼  

add_shortcodeアド ショートコード (WP独自関数)
WordPressにショートコードを追加できます。ショートコードは記事内や固定ページなどで利用できます。
【書き方】
add_shortcode(ショートコード名, 呼出す関数);
【呼び出し方】
[ショートコード名 キー名='値']
【備考】
  • キー名は複数記載することも可能
【functions.phpに記載】

function bbb($ccc) {
  return 'abc' . $ccc['ddd'];
}
add_shortcode('aaa', 'bbb');

【記事や固定ページに記載】

[aaa ddd='def']

【実行結果】

abcdef

functionファンクション
独自の関数を作成することができます。
【書き方】
function 任意の関数名(仮引数代入用変数){
 処理内容
}
【呼び出し方】
関数名(実引数)
【備考】
  • 実引数には仮引数に渡したいデータを指定する
  • returnリターン」で返し値(戻り値)を指定できる
  • 仮引数代入用変数に任意の変数を指定すると、呼び出し時に指定した実引数が代入される
  • 関数名を指定しない場合は「無名関数」または「クロージャ」と呼び、頻繁に呼び出さない関数の場合などに利用でき、変数などに代入できる
【任意のファイルに記載】

function aaa($bbb){
  $ccc = $bbb . '4';
  return $ccc
}

echo aaa(123);

【実行結果】

1234

includeインクルード
指定したファイルを読み込みます。
【書き方】
include '読込ファイルパス'
【備考】
  • 「読込ファイルパス」は丸括弧をつけても省略してもよい
【aaa.phpに記載】

echo 'abc';

【任意のファイルに記載】

include '/aaa.php';

【実行結果】

abc

ob_startオービー スタート
バッファリング[※]をオンにして、「ob_start」以降を表示せずにバッファ[※]に保存します。
【書き方】
ob_start(コールバック関数,チェックサイズ,フラグ);
【備考】
  • 「コールバック関数」を指定することで出力バッファが送信されたタイミングでバッファがコールバック関数に渡される
  • 「チェックサイズ」を指定したバイト数を超えるたびにバッファが送信される
  • 「チェックサイズ」のデフォルトは「0」でサイズを無視する
  • 「フラグ」を指定すると使用できるバッファ操作関数を設定できる
  • 「フラグ」のデフォルトは「PHP_OUTPUT_HANDLER_CLEANABLE | PHP_OUTPUT_HANDLER_FLUSHABLE | PHP_OUTPUT_HANDLER_REMOVABLE」で送信や削除などすべての関数が使用できる
【任意のファイルに記載】

ob_start();
echo 'abc';
echo 'def';
echo 'ghi';
$aaa = ob_get_contents(); // バッファの内容を取得
ob_end_clean(); // バッファリングをオフにしてバッファの内容をクリア

echo $aaa;

【実行結果】

abcdefghi

ob_get_cleanオービー ゲット クリーン
バッファリング[※]をオフにして、バッファ[※]の内容を返します。バッファの内容はクリアされます。
【書き方】
任意の変数名 = ob_get_clean();
【呼び出し方】
ob_get_cleanを格納した変数を呼び出す
【備考】
  • 「ob_get_contents」と「ob_end_clean」を同時に実行した場合と同等の機能を有する
【任意のファイルに記載】

ob_start(); // バッファをオンにして以降を非表示
echo 'abc';
echo 'def';
echo 'ghi';
$aaa = ob_get_clean();

echo $aaa;

【実行結果】

abcdefghi

バッファリング
専用の記憶領域に一時的にデータを保存し様々な処理を行うこと。
バッファ
一時的にデータを保存するための記憶領域。

まとめ

 今回、「functions.php」にコードを追加することで、WordPressに「ショートコード」を追加する方法を紹介しましたが、他にも「プラグイン」(Insert PHP Code Snippetなど)を追加してPHP用のショートコードを追加する方法もあります。どちらの方法も、メリット・デメリットがあるので、お好みの方法でショートコードを追加してみてください。管理人は、カスタマイズが自由にできる今回の方法をおすすめします。