ディレクトリのパスについて
WordPressやPHPのプロジェクトでファイルシステムにアクセスする際、ディレクトリのパスを正確に理解することは非常に重要です。以下では、異なるパス表記について説明します。
./〇〇
(相対パス)
「現在のディレクトリ」からの相対パスを示します。
ピリオド (.) は現在のディレクトリを表し、〇〇 はそのディレクトリ内のファイルやサブディレクトリです。
例:./style.css は現在のディレクトリ内の style.css ファイルを指します。/〇〇
(絶対パス)
「ルートディレクトリ」からの絶対パスを意味します。
スラッシュ (/) はルートディレクトリを指し、〇〇 はルートディレクトリからの位置を示します。
例:/var/www/html/wp-content/themes はサーバーのルートからのパスです。〇〇
(ファイル名またはディレクトリ名)
単にファイル名やディレクトリ名を指します。
暗黙的に「現在のディレクトリ内」のファイルやディレクトリを参照します。
環境によっては異なる場所を参照することがあります。
./〇〇 と 〇〇 の違い
./〇〇 は「現在のディレクトリ」からの相対パスを明示的に指定しています。
〇〇 は暗黙的に現在のディレクトリを参照しますが、環境によっては異なる振る舞いをすることがあります。
./〇〇 を使用することで、コードが現在のディレクトリからの相対パスを使用していることを明確にします。
content/themes/mytheme/
からパスを指定した場合
./〇〇
(相対パス):- この表記は、テーマ内の「現在のディレクトリ」からの相対パスで指定されたディレクトリを意味します。例えば、テーマのルートディレクトリから
./images
とすると、これはテーマのルートディレクトリ内のimages
ディレクトリを指します。また、サブディレクトリ内のファイルから./images
を使用する場合、それはそのサブディレクトリ内のimages
ディレクトリを指すことになります。
- この表記は、テーマ内の「現在のディレクトリ」からの相対パスで指定されたディレクトリを意味します。例えば、テーマのルートディレクトリから
/〇〇
(絶対パス):- このパスはサーバーのルートディレクトリからの絶対パスです。例えば、
/wp-content/themes/mytheme/images
と指定すると、サーバーのルートディレクトリからwp-content/themes/mytheme/images
というパスでディレクトリを指します。WordPressのコンテキストでは、このような絶対パスは通常使用されませんが、サーバー全体のファイル構造に精通している場合に限り使用されることがあります。
- このパスはサーバーのルートディレクトリからの絶対パスです。例えば、
〇〇
(単純なディレクトリ名):- この表記は、現在の作業ディレクトリに対する相対的な参照です。WordPressテーマ内で
images
と記述されている場合、これはテーマのルートディレクトリから見てimages
ディレクトリを指します。テーマのサブディレクトリからこのように記述されている場合は、そのサブディレクトリ内にあるimages
ディレクトリを指すことになります。
- この表記は、現在の作業ディレクトリに対する相対的な参照です。WordPressテーマ内で
wp-content/plugins/myplugin
からパスを指定した場合
./〇〇
(相対パス):- このパスは、
myplugin
プラグイン内の現在のディレクトリからの相対パスを指します。例えば、プラグインのメインファイル(通常はmyplugin.php
)から./includes
と記述されている場合、これはmyplugin
プラグインのルートディレクトリ内にあるincludes
ディレクトリを指します。サブディレクトリ内のスクリプトからこのパスを使用する場合、それはそのサブディレクトリに相対的な位置にあるincludes
ディレクトリを指します。
- このパスは、
/〇〇
(絶対パス):- このパスは、サーバーのルートディレクトリからの絶対パスを意味します。たとえば、
/wp-content/plugins/myplugin/includes
と指定された場合、これはサーバーのルートディレクトリからwp-content/plugins/myplugin/includes
ディレクトリを指します。WordPressプラグイン開発では、このような絶対パスは一般的ではなく、サーバーの構成によっては期待通りに動作しない場合があります。
- このパスは、サーバーのルートディレクトリからの絶対パスを意味します。たとえば、
〇〇
(単純なディレクトリ名):- この表記は、現在の作業ディレクトリに関連する相対パスです。
myplugin
プラグインのコンテキストでは、これは通常、プラグインのルートディレクトリを基準にします。例えば、プラグインのメインファイルからincludes
と記述されている場合、これはmyplugin
のルートディレクトリ内にあるincludes
ディレクトリを指します。
- この表記は、現在の作業ディレクトリに関連する相対パスです。
カスタムHTMLから<iframe>で読み込む場合
WordPressのカスタムHTMLブロック内で <iframe>
タグを使用する場合、以下のようにパスが解釈されます
./〇〇
(相対パス):- このパスは、現在のページのURL(
http://example.com/wp-content/themes/mytheme/page.php
)に対して相対的です。例えば、<iframe src="./anotherpage.html">
はhttp://example.com/wp-content/themes/mytheme/anotherpage.html
を指します。ここで./
は「現在のディレクトリ」(この場合はmytheme
ディレクトリ)を意味します。
- このパスは、現在のページのURL(
/〇〇
(絶対パス):- このパスは、ウェブサイトのルートディレクトリ(この場合は
http://example.com/
)からの絶対パスを指します。例えば、<iframe src="/anotherpage.html">
はhttp://example.com/anotherpage.html
を指します。
- このパスは、ウェブサイトのルートディレクトリ(この場合は
〇〇
(単純なパス):- このパスは、現在のページのURLに対して直接的な相対パスです。
<iframe src="anotherpage.html">
とすると、これはhttp://example.com/wp-content/themes/mytheme/anotherpage.html
を指します。ここでanotherpage.html
は、現在のディレクトリ(mytheme
ディレクトリ)に直接配置されていると見なされます。
- このパスは、現在のページのURLに対して直接的な相対パスです。
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を基準に解釈される
- テーマまたはプラグインから読み込まれた場合を考える