Include Shortcode

Include Shortcode

Gutenberg(ブロックエディター)のショートコードブロックで、テーマ内の任意の PHP ファイルをインクルード・実行できるプラグインです。

クライアントのサイト運営上、必要に駆られて作成した野良プラグインです。公式には登録していません。下記参照のうえ、もしよろしければダウンロードしてご利用ください。

Last Update : 2026-03-18 (Version 1.0.4)

Why?

WordPress標準のブロックエディターはとても便利。でも(原則/デフォルトでは)ブロックエディター内で「特定のプログラムを実行」することは出来ません。

サイトを運用/管理するうえで、ブロックエディター配下のコンテンツでも、ちょっとしたプログラムを動かしたい! ってこと … ありませんか? 僕は結構あります😅

よくあるケース: 年度替わりに合わせて

年度替わりで異動があったり、価格改定があったり。ウェブサイト上の記述もそれに合わせて変更を要する場面はよくあります。

  • 当年度中(2026年3月31日まで)は、現状の担当表を掲示したままとし
  • 新年度(2026年4月1日から)は、こちらの新担当シフト表を掲示するように
  • 当年度中(2026年3月31日まで)は、旧価格表を掲示したままで
  • 新年度(2026年4月1日)になったら、こちらの新価格表にパッと切り替え

よくあるケース: 季節ごとのイベント告知

春・夏・秋・冬、年4回開催されるイベントの年間スケジュールが決まっていて、日付に応じて次回案内の表示を適宜切り替え … のような場合。

  • 次回、春のイベント日は 2026年4月12日。当日まではその案内を掲示しておき
  • 翌日(4月13日)になったら、夏のイベント案内にパッと切り替え
  • 同じ要領で、秋・冬も適宜自動的に切り替えて表示

条件分岐で処理したい

普通のPHPサイトなら、条件分岐での出し分けは至極簡単です。静的HTMLサイトでも(HTMLソースそのものは変えられませんが)当該箇所をJavaScriptで出し分けることもできます。

しかし、ことWordPress・ブロックエディター配下のコンテンツとなると … (デフォルトでは)システマチックに条件分岐 ~ 出し分けすることが叶いません。できれば、あらかじめ「指定日付になったら自動で表示が切り替わる」よう、プログラムを仕込んでおけるとスマートです。

そう、ノーコード・GUIなせいで逆に不便。コードで処理したほーがえーがね! 早いがね!

So,

そこで🙂 当プラグインは

対象ページ・意図した箇所・ブロックエディター内にて、任意のphpプログラムをインクルードして動かす機能を付与します。

  • WordPress管理画面内での設定(ディレクトリ指定、ホワイトリストなど)
  • 実行ディレクトリ および phpファイルそのものは WordPressを介さずSFTP/FTPで管理

併用とすることで、使い勝手とセキュリティに配慮しました。

使用例: 日付による条件分岐

担当者の週間スケジュール表を「年度替わりとともに自動的に表示切替」する例です。

クリニック(医師)、習い事(講師)、サービス受付窓口担当者など、ウェブサイトに明記・掲示しているケースは少なからずあるかと思います。

下記phpファイルをブロックエディターの任意の箇所でインクルードすることで、サーバー側の時計に合わせて、[旧年度版] [新年度版] 表示が切り替わります。

PHP
<?php
/**
 * サンプル:日付による条件分岐
 * このファイルをテーマ内 /_includes-in-blockeditor/ に設置し、
 * [include file="schedule-20260401.php"] で呼び出します。
 *
 * ⚠ このファイルは直接 Web アクセスされないようにします。
 *   .htaccess による保護を推奨(README 参照)。
 */

defined( 'ABSPATH' ) || exit; // WordPress 外からの直接実行を防止

$today = new DateTime( 'now', new DateTimeZone( 'Asia/Tokyo' ) );
$new_year_start = new DateTimeImmutable( '2026-04-01', new DateTimeZone( 'Asia/Tokyo' ) );
$prev_year_end  = $new_year_start->modify('-1 day');

/* 確認用 */ 
// echo '<p>本日は '; echo $today->format('Y年n月j日'); echo ' です。</p>';
// echo '<p>新年度は '; echo $new_year_start->format('Y年n月j日'); echo ' からですね。</p>';
?>

<?php if ( $today >= $new_year_start ): // 新年度のコンテンツ ?> 
	<div class="schedule-notice new-year">
		<p>担当シフト表(<?php echo $new_year_start->format('Y年n月j日'); ?>~)</p>
		<table class="staff-schedule">
			<tr>
				<th> </th>
				<th></th><th></th><th></th><th></th><th></th><th></th>
			</tr>
			<tr>
				<th>午前<br><span class="nowrap hours">9:00 - 12:00</span></th>
				<td>本田</td><td>本田</td><td>弩架</td><td>山派</td><td>山派</td><td>弩架</td>
			</tr>
			<tr>
				<th>午後<br><span class="nowrap hours">16:00 - 19:00</span></th>
				<td>鈴木</td><td>鈴木</td><td>脳頓</td><td>川崎</td><td>川崎</td><td>脳頓</td>
			</tr>
		</table>
	</div>
<?php else: // 旧年度のコンテンツ ?>
	<div class="schedule-notice prev-year">
		<p>担当シフト表(<?php echo $prev_year_end->format('Y年n月j日'); ?>まで)</p>
		<table class="staff-schedule">
			<tr>
				<th> </th>
				<th></th><th></th><th></th><th></th><th></th><th></th>
			</tr>
			<tr>
				<th>午前<br><span class="nowrap hours">9:00 - 12:00</span></th>
				<td>本田</td><td>山派</td><td>覇麗</td><td>本田</td><td>山派</td><td>覇麗</td>
			</tr>
			<tr>
				<th>午後<br><span class="nowrap hours">16:00 - 19:00</span></th>
				<td>鈴木</td><td>川崎</td><td>目黒</td><td>鈴木</td><td>川崎</td><td>目黒</td>
			</tr>
		</table>
	</div>
<?php endif; ?>

<style>
.schedule-notice {width:100%; overflow-x:auto;}
.staff-schedule {width:100%; max-width:1000px;}
.staff-schedule th {background:#eee;}
.staff-schedule :is(th,td) {padding:0.5em; vertical-align:middle; text-align:center; white-space:nowrap;}
.staff-schedule .hours {display:inline-block; font-size:0.75em; white-space:nowrap;}
</style>

機能・使い方

WordPressのブロックエディター内でショートコードを記述して使います。

ブロックエディター内でphpファイルをインクルードするショートコードの記述例 - Include Shortcode
ファイル名は拡張子を含めて記述

ショートコード構文

[include file=”foo-bar.php”]

  • `file` 属性にはファイル名のみを指定します(パス区切り `/` は使えません)
  • `.php` 拡張子のみ有効です

プラグイン設定

インストール後は、WordPress管理画面 > ツール > Include Shortcode より 初期設定が必要です。

インクルードディレクトリの準備

  1. 設定画面にて、インクルードするphpファイルを置くディレクトリを指定してください。初期状態では「_includes-in-blockeditor」としてありますが、任意のフォルダ名を入力できます。
  2. 設定画面で指定したディレクトリを、* SFTP/FTPソフトを用いて有効なテーマ(または使用中の子テーマ)のフォルダ直下に作成 * してください。

デフォルト例

/wp-content/themes/your-theme/_includes-in-blockeditor/

ホワイトリスト登録

include させる .php ファイル名を明示的に指定することで、セキュリティが向上します(関連後述)。ホワイトリストを空欄にすると、インクルードディレクトリ内の .php すべてを許可する形となります。

セキュリティ対策

「任意のphpファイルをインクルードして実行できる」ようにする ⇒ 管理者の意図せぬところで悪意あるコードが実行されぬよう、セキュリティ面への配慮が必要となります。

当プラグインは、以下の多層的なセキュリティ対策を実装しています。

プラグイン側の対策

権限チェックWordPress管理画面からの設定は管理者ユーザーのみ
nonce 検証設定保存フォームに WordPress nonce を使用(CSRF 防止)
拡張子制限`.php` ファイルのみ許可
ファイル名文字制限英数字・ハイフン・アンダースコア・ドットのみ許可
ディレクトリトラバーサル防止 `../` 等のパターンを複数手法でブロック
realpath() 二重確認シンボリックリンクを使った迂回を防止
ホワイトリスト使用するファイルのみ登録して想定外実行を防止
エラー表示制限PHP エラーは管理者にのみ表示(一般ユーザーには非表示)
ABSPATH チェック各インクルードファイルに記載することで直接実行を防止(後述)

推奨設定・追加対策

① インクルードディレクトリへの直接 Web アクセスを禁止する

ディレクトリ内に `.htaccess` を作成し、HTTP 経由の直接アクセスを拒否

Apacheの場合

/wp-content/themes/your-theme/_includes-in-blockeditor/.htaccess

Apache
<Files "*.php">
    Order allow,deny
    Deny from all
</Files>

Nginx の場合はサーバー設定で該当ディレクトリへのアクセスを制限してください。

② インクルードされるファイルの先頭に ABSPATH チェックを入れる

PHP
<?php
defined( 'ABSPATH' ) || exit;
// ... 以降に処理を記述

これにより WordPress を経由せず直接 PHP を呼び出された場合に終了します。

③ ホワイトリストを必ず設定する

設定画面のホワイトリストが空の場合は、ディレクトリ内の全 .php が実行可能です。本番運用では使用するファイルのみをホワイトリストに登録しておくことを強く推奨します。

ダウンロード

プラグイン本体

動作要件

  • WordPress 6.0 以上
  • PHP 8.2 以上を推奨(最低 7.0 以上)
  • Gutenberg ブロックエディター使用時

インストール

  1. WordPress 管理画面 > プラグイン > プラグインを追加 > プラグインのアップロード >
  2. [参照] ボタンを押す > (PC内の) include-shortcode-v1.0.4.zip を選択してアップロード
  3. 「Include Shortcode」を有効化
  4. ツール > Include Shortcode で設定を行う

免責事項

備考

  • 当プラグインの開発には、AI(Claude)の手を大いに借りております。多謝🙇‍♂️
  • ライセンスは GPL-2.0-or-later です。(プラグイン本体に明記)
  • 著作権は当方:ジュウロクデザインに帰属します。(プラグイン本体に明記)

問い合わせ

  • ごめんなさい。原則ノーサポートです。使用方法についてお問い合わせいただいても返信できない場合がほとんどとなります。悪しからずご了承ください。 (例外:直接のお客様のお問い合わせにはもちろん対応させていただきます)
  • WordPress構築、トラブル相談、既存サイトの改修などに関する問い合わせ全般は大歓迎です!🙂 こちらのメールフォーム からご相談いただければ幸いです。

ご相談・お問い合わせは

Tel: 090-8704-9188
または
こちらのメールフォームで