ディレクトリのパスについて
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を基準に解釈される
- テーマまたはプラグインから読み込まれた場合を考える