前提・実現したいこと
file_get_contents で読まれるテンプレートにて、アクセス中のURL(ユーザーがアドレスバーに入力したURL)を取得したいです。
発生している問題
しかしアクセス中のURLではなく、file_get_contents に渡したファイル名が取得されてしまいます。
該当のソースコード
index.php に以下を書いて、アクセスされたURLに応じてWordPressを読むかどうか分岐しています。
php
1/* 2index.php 3wp-content.php のディレクトリにある index.php (テーマファイルの方ではない) 4*/ 5 6// URLの情報 7$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 8$isnt_wp = explode( '/', parse_url($url)['path'] )[1] === 'isnt_wp'; 9 10// アクセスされたURLに応じてWordPressを読むかどうか分岐 11if ( $isnt_wp ) { 12 // "https://example.com/isnt_wp" にアクセスした場合は、isnt_wp.php を読む 13 $file = 'https://example.com/wp-content/themes/theme_name/isnt_wp.php'; 14 echo file_get_contents( $file ); 15} else { 16 // 普通のWordPressの index.php に書かれている内容を実行 17 define( 'WP_USE_THEMES', true ); 18 require __DIR__ . '/wp-blog-header.php'; 19}
そして読まれる isnt_wp.php で次を書いていますが、$url の値が上記 index.php のhttps://example.com/isnt_wpではなく、file_get_contentsに渡した
https://example.com/wp-content/themes/theme_name/isnt_wpになってしまうという問題です。
php
1/* 2isnt_wp.php 3*/ 4 5// URLの情報 6$url = (empty($_SERVER['HTTPS']) ? 'http://' : 'https://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 7 8// ここで $url が "https://example.com/wp-content/themes/theme_name/isnt_wp.php" になってしまう 9var_dump( $url );
試したこと
一瞬$_SERVERでなく$GLOBALS['wp']から取得できるかと思いましたが、index.php は WorPress実行前なので無理でした。
また index.php で $url を define しておけば isnt_wp.php で取得できると思ったのですが、定数が未定義とのエラーとなりました。
同じように define でなく関数化する方法についても、関数が未定義のエラーとなりました。
どのようにしたら、isnt_wp.php でアクセス中のURLが取得できますでしょうか?
回答1件
あなたの回答
tips
プレビュー