WordPressのheader.phpなどのインクルードファイルに直接アクセスさせない方法

こんにちは。最近自制心の塊かと思うくらい節制しています。

さて、今回もWordPressの小ネタです。
WordPressでテーマを作っていたりするとheader.phpやfooter.phpをインクルードしますよね。

そのインクルードするheader.phpやfooter.phpを直接URL叩くとエラーが表示されパスが知られてしまうことも。なので直接header.phpなどにアクセスがあった場合、拒否する必要があります。

今回はその方法をご紹介します。コードは下記のとおり。

ファイルの先頭に記載

<?php

if ( !defined('ABSPATH') ) {
    die( 'Forbidden' );
}

ABSPATHはwp-configで定義されているので、インクルードファイルに直接アクセスがあった場合、falseになり、dieが実行されます。

WordPress以外の記述方法

ちなみにWordPress以外で同等の処理を行う場合は下記のとおり。

インクルードする側に記述

WordPressでいうindex.phpなどに記載します。

<?php
define('MyConst', TRUE);
?>

インクルードされる側に記載

WordPressでいうheader.phpなどに記載します。

<?php
if(!defined('MyConst')) {
   die('Direct access not permitted');
}
?>

確かプラグイン開発ではこれが記述されてないとダメだった気がします。セキュリティ的にも記載しておいた方がいいと思うので積極的に使っていきましょう。

この記事を書いた人

keishiro

こんにちは、板川恵司朗です。