WordPress

WordPress 全ファイルから 特定のキーワードを含むファイルを検索・抽出する PHP プログラム(サンプル)

WordPress 全ファイルから 特定のキーワードを含むファイルを検索・抽出する PHP プログラム(サンプル)

WordPress をカスタマイズしたい場合など、WordPress の全ファイルの中から 関数名やクラス名など…特定のキーワードを含むファイルを検索・抽出したい場合に、WordPress インストールディレクトリをすべてダウンロードすると…膨大な時間がかかります。
そこで、サーバー上に簡単な PHP プログラムをアップロードして実行することで、目的の関数名やクラス名が どのディレクトリのどのファイルに記述されているか…を検索・抽出できるサンプルプログラムをご紹介いたします。

WordPress のファイル一覧を取得する

WordPress 内のファイル一覧を取得するには「WordPress にアップロードした画像ファイルがサーバー内のどこにあるのか?検索する PHP プログラム(サンプル)」でご紹介した通り、以下の PHP プログラムで取得することが可能です。

<?php
	getDir("../wp-content/");
	
	function getDir($strDir){
		
		$aryDir = scandir($strDir);
		
		for ($i = 0; $i <= count($aryDir) - 1; $i++){
			
			if ($aryDir[$i] == "." || $aryDir[$i] == ".."){
				//処理しない
			} else {
				if (is_dir($strDir . $aryDir[$i])){
					//再帰検索する
					getDir($strDir . $aryDir[$i] . "/");
				} else {
					//ファイルの場合
					if ($aryDir[$i] == "hogehoge.png"){
						echo $strDir;
					}
				}
			}
		}
	}
?>

ファイルを開いてキーワード検索する

18行目からのファイル名を検索している部分を書き換えて、ファイルを file_get_contents 関数で開き、その中に検索・抽出したいキーワード “hogehoge” があるか否かを mb_strpos 関数で取得し、キーワードがある場合には ディレクトリ名とファイル名を出力表示するためには、18~20行目をこのように書き換えます…

$strContents = file_get_contents($strDir . $aryDir[$i]);
if (mb_strpos($strContents, "hogehoge", 0, "UTF-8") !== FALSE){
	echo $strDir . $aryDir[$i] . "<br>";
}

拡張子を絞り込む

すべてのファイルを検索するとサーバーに負荷がかかるので、特定の拡張子 例えば “*.php” のみ検索するように条件式を追加します…

if (strtolower(mb_substr($aryDir[$i], -4, 4, "UTF-8")) == ".php"){
	$strContents = file_get_contents($strDir . $aryDir[$i]);
	if (mb_strpos($strContents, "hogehoge", 0, "UTF-8") !== FALSE){
		echo $strDir . $aryDir[$i] . "<br>";
	}
}

まとめると、こうなります…

<?php
	getDir("../wp-content/");
	
	function getDir($strDir){
		
		$aryDir= scandir($strDir);
		
		for ($i = 0; $i <= count($aryDir) - 1; $i++){
			
			if ($aryDir[$i] == "." || $aryDir[$i] == ".."){
				//処理しない
			} else {
				if (is_dir($strDir . $aryDir[$i])){
					//再帰検索する
					getDir($strDir . $aryDir[$i] . "/");
				} else {
					//ファイルの場合
					if (mb_substr($aryDir[$i], -4, 4, "UTF-8") == ".php"){
						$strContents = file_get_contents($strDir . $aryDir[$i]);
						if (mb_strpos($strContents, "hogehoge", 0, "UTF-8") !== FALSE){
							echo $strDir . $aryDir[$i] . "<br>";
						}
					}
				}
			}
		}
	}
?>

この PHP プログラムをレンタルサーバーにアップロードし実行することで、どんな WordPress テーマを使おうが、どんなプラグインをインストールしようが あなたがお使いの WordPress の中のどのファイルにどんなキーワードが使われているのか…を簡単に検索することが可能になります!