ディレクトリのパスをわかりやすく説明

ディレクトリのパスについて

WordPressやPHPのプロジェクトでファイルシステムにアクセスする際、ディレクトリのパスを正確に理解することは非常に重要です。以下では、異なるパス表記について説明します。

  1. ./〇〇(相対パス)
    「現在のディレクトリ」からの相対パスを示します。
    ピリオド (.) は現在のディレクトリを表し、〇〇 はそのディレクトリ内のファイルやサブディレクトリです。
    例:./style.css は現在のディレクトリ内の style.css ファイルを指します。
  2. /〇〇(絶対パス)
    「ルートディレクトリ」からの絶対パスを意味します。
    スラッシュ (/) はルートディレクトリを指し、〇〇 はルートディレクトリからの位置を示します。
    例:/var/www/html/wp-content/themes はサーバーのルートからのパスです。
  3. 〇〇(ファイル名またはディレクトリ名)
    単にファイル名やディレクトリ名を指します。
    暗黙的に「現在のディレクトリ内」のファイルやディレクトリを参照します。
    環境によっては異なる場所を参照することがあります。

./〇〇 と 〇〇 の違い

./〇〇 は「現在のディレクトリ」からの相対パスを明示的に指定しています。
〇〇 は暗黙的に現在のディレクトリを参照しますが、環境によっては異なる振る舞いをすることがあります。
./〇〇 を使用することで、コードが現在のディレクトリからの相対パスを使用していることを明確にします。

content/themes/mytheme/からパスを指定した場合

  1. ./〇〇(相対パス):
    • この表記は、テーマ内の「現在のディレクトリ」からの相対パスで指定されたディレクトリを意味します。例えば、テーマのルートディレクトリから ./images とすると、これはテーマのルートディレクトリ内の images ディレクトリを指します。また、サブディレクトリ内のファイルから ./images を使用する場合、それはそのサブディレクトリ内の images ディレクトリを指すことになります。
  2. /〇〇(絶対パス):
    • このパスはサーバーのルートディレクトリからの絶対パスです。例えば、/wp-content/themes/mytheme/images と指定すると、サーバーのルートディレクトリから wp-content/themes/mytheme/images というパスでディレクトリを指します。WordPressのコンテキストでは、このような絶対パスは通常使用されませんが、サーバー全体のファイル構造に精通している場合に限り使用されることがあります。
  3. 〇〇(単純なディレクトリ名):
    • この表記は、現在の作業ディレクトリに対する相対的な参照です。WordPressテーマ内で images と記述されている場合、これはテーマのルートディレクトリから見て images ディレクトリを指します。テーマのサブディレクトリからこのように記述されている場合は、そのサブディレクトリ内にある images ディレクトリを指すことになります。

wp-content/plugins/mypluginからパスを指定した場合

  1. ./〇〇(相対パス):
    • このパスは、mypluginプラグイン内の現在のディレクトリからの相対パスを指します。例えば、プラグインのメインファイル(通常は myplugin.php)から ./includes と記述されている場合、これは myplugin プラグインのルートディレクトリ内にある includes ディレクトリを指します。サブディレクトリ内のスクリプトからこのパスを使用する場合、それはそのサブディレクトリに相対的な位置にある includes ディレクトリを指します。
  2. /〇〇(絶対パス):
    • このパスは、サーバーのルートディレクトリからの絶対パスを意味します。たとえば、/wp-content/plugins/myplugin/includes と指定された場合、これはサーバーのルートディレクトリから wp-content/plugins/myplugin/includes ディレクトリを指します。WordPressプラグイン開発では、このような絶対パスは一般的ではなく、サーバーの構成によっては期待通りに動作しない場合があります。
  3. 〇〇(単純なディレクトリ名):
    • この表記は、現在の作業ディレクトリに関連する相対パスです。mypluginプラグインのコンテキストでは、これは通常、プラグインのルートディレクトリを基準にします。例えば、プラグインのメインファイルから includes と記述されている場合、これは myplugin のルートディレクトリ内にある includes ディレクトリを指します。

カスタムHTMLから<iframe>で読み込む場合

WordPressのカスタムHTMLブロック内で <iframe> タグを使用する場合、以下のようにパスが解釈されます

  1. ./〇〇(相対パス):
    • このパスは、現在のページのURL(http://example.com/wp-content/themes/mytheme/page.php)に対して相対的です。例えば、<iframe src="./anotherpage.html">http://example.com/wp-content/themes/mytheme/anotherpage.html を指します。ここで ./ は「現在のディレクトリ」(この場合は mytheme ディレクトリ)を意味します。
  2. /〇〇(絶対パス):
    • このパスは、ウェブサイトのルートディレクトリ(この場合は http://example.com/)からの絶対パスを指します。例えば、<iframe src="/anotherpage.html">http://example.com/anotherpage.html を指します。
  3. 〇〇(単純なパス):
    • このパスは、現在のページのURLに対して直接的な相対パスです。<iframe src="anotherpage.html"> とすると、これは http://example.com/wp-content/themes/mytheme/anotherpage.html を指します。ここで anotherpage.html は、現在のディレクトリ(mytheme ディレクトリ)に直接配置されていると見なされます。

my-snow-monkeyプラグイン内のファイルから /wp-content/news/demo.php をインクルードする例

add_action(
	'snow_monkey_before_contents_inner',
	function() {
		// my-snow-monkey プラグイン内のファイルから /wp-content/news/demo.php をインクルードする
		include_once( dirname( __FILE__ ) . '/../../../news/demo.php' );

		?>
		表示したい HTML 文字列
		<?php
	}
);

【PKOBO-News01】 PHP新着情報・お知らせ・ニュースCMSプログラム フリー(無料)版をWordPressに導入したい場合

検証した結果、PHPでtop-umekomi.phpを実行することはできなかった。2024/01/15現在

おそらくWordPressとの干渉が予想される。(セキュリティ関連)

対策

iframeで対応しました。

<iframe src="top-umekomi.php" width="700" height="300" frameborder="0" scrolling="auto"></iframe>
手順
top-umekomi.php を読み込む

ディレクトリのパスに注意すること

詳細ページの設定

pkobo_news/admin/include/config.phpの”詳細ページのファイルパス”を設定する

  • カスタムHTMLから指定した場合は、そのHTMLページのURLを基準に解釈される
  • テーマまたはプラグインから読み込まれた場合を考える