質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

3回答

9973閲覧

WordPressにて、include_once が出来ません。

k.nomura

総合スコア12

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/02/26 07:16

WordPressにて記事を出力し、それをincludeしようとしたのですが、
上手くいきません。
エラーが三つ出ていまして。。

Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in ~
Warning: include_once(http://~): failed to open stream: no suitable wrapper could be found in ~
Warning: include_once(): Failed opening 'http://~' for inclusion (include_path='.:/opt/php-7.2.6/data/pear') in

と出力されてしまいます。
他のページのincludeは、上手く行っているので、includeが出来ないサーバーや、環境ではないと思います。

ただ、うまくいっているページは、既にファイルがあり、WordPressで書き出されたファイルではありません。
WordPressで書き出されたページをincludeするのは、include_once() 以外の方法が必要なのでしょうか?

ご教授をお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/02/26 07:21

どのようなプログラムを記載したのか 具体的なコードを質問を編集して、記載していただけないでしょうか?
k.nomura

2019/02/26 07:27

失礼しました。明記したコードは下記の通りになります。 <?php include_once(TEMPLATEPATH.'/calendar2/'); ?>
CHERRY

2019/02/26 07:34 編集

> include_once(TEMPLATEPATH.'/calendar2/'); include_once の中が、` / ` で終わっているのでディレクトリを指定していて、ファイル名が抜けているように見えますがファイル名は何ですか?
k.nomura

2019/02/26 07:40

WordPressで記事を出力していますので、そのページにファイル拡張子は有りません。 テンプレートは、calendar.php を読み込んでいます。
guest

回答3

0

ベストアンサー

他のページのincludeは、上手く行っているので、includeが出来ないサーバーや、環境ではないと思います。

ただ、うまくいっているページは、既にファイルがあり、WordPressで書き出されたファイルではありません。

他の部分は、ファイルがあるのですね。

そうであれば、エラーメッセージ通りで、

Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in ~

Warning: include_once(http://~): failed to open stream: no suitable wrapper could be found in ~
Warning: include_once(): Failed opening 'http://~' for inclusion (include_path='.:/opt/php-7.2.6/data/pear') in

allow_url_include が、 0 (OFF) になっているというメッセージなので、php.ini 等で、 allow_url_include を有効に設定してください。


追記を受けて...

明記したコードは下記の通りになります。

<?php include_once(TEMPLATEPATH.'/calendar2/'); ?>

まず、include_once は、実在するファイルしか読み込めません。

TEMPLATEPATH は、通常、テンプレートディレクトリのファイルパスが定義されているので、/var/www/example.jp/wp-content/themes/twentyseventeen-child のような感じになると思うのですが...

試しに、wordpress の twentyseventeen の子テーマで page-xxx.php を作成して、

<?php echo "TEMPLATEPATH"; include_once(TEMPLATEPATH.'/css/'); ?>

のように試しにディレクトリを include させてみたところ、

include_once(/var/www/example.jp/wp-content/themes/twentyseventeen-child/css/): failed to open stream: No such file or directory in /var/www/example.jp/wp-content/themes/twentyseventeen-child/page-xxx.php on line 29
include_once(): Failed opening '/var/www/example.jp/wp-content/themes/twentyseventeen-child/css/' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/example.jp/wp-content/themes/twentyseventeen-child/page-xxx.php on line 29

というエラーになりました。

投稿2019/02/26 07:27

編集2019/02/26 08:26
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k.nomura

2019/02/26 07:55

サーバーの php.ini設定 を修正し、allow_url_include を on にしましたら、 確かに、1つ目のエラーメッセージは消えました。 ただ、残りの二つが消えません。 Warning: include_once(/home/~/): failed to open stream: No such file or directory in ~ Warning: include_once(): Failed opening '/home/~' for inclusion (include_path='.:/opt/php-7.2.6/data/pear') in /home/~ 原因が解りますでしょうか?
CHERRY

2019/02/26 08:02 編集

エラーの原因は、ファイルが存在していないからです。 > Warning: include_once(/home/~/): failed to open stream: No such file or directory エラーメッセージで、表示されている `/home/~/` は、存在していますか? WordPress の生成する コンテンツを読み込みたいのであれば、 include_once 'http://example.com/calendar2/'; のように URL を指定して読み込むようにしてください。
k.nomura

2019/02/26 08:23

> エラーの原因は、ファイルが存在していないからです。 こちらのアドバイスで解りました! 固定ページを読み込む際は、include_once を使うのではなく、 下記の関数を使う事で解決致しました。 $page_info = get_page_by_path('固定ページ名'); $page = get_post($page_info); echo $page->post_content; ありがとうございました!
CHERRY

2019/02/26 08:27

ページの中身が取得できたらよかったのですね。 HTML の出力を取り込みたいのだと思っていました。
guest

0

WordPressで出力した記事(ということはHTMLですよね?)をincludeする目的がわからないのですが…
とりあえず、

Plain

1Warning: include_once(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in ~

とあるように、サーバの設定によってURLでのincludeが禁止されているようです。

投稿2019/02/26 07:24

Takumiboo

総合スコア2534

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k.nomura

2019/02/26 07:28

同じドメインの他のページからは、includeが出来ていますので、サーバーの問題では無いように思いますが。。
Takumiboo

2019/02/26 07:41

「同じドメインの他のページから」行っているincludeも同様に、HTTP経由での取得ですか?
k.nomura

2019/02/26 07:44

いえ他のページも同様に、下記のような書式です。 include_once(TEMPLATEPATH.'/_tmp/meta.php');
Takumiboo

2019/02/26 07:51

include_once(TEMPLATEPATH.'/_tmp/meta.php'); はファイルシステム的に読み込みに行きますよね。 もしこれと同じように問題の部分もincludeしているならば、WordPressで出力された状態では読み込めないはずです。(PHPのソースコードをそのままincludeするだけ) また、TEMPLATEPATHを用いているのであれば、httpで始まるURLの展開もされないはずです。しかしエラーメッセージではhttp://で始まるものをincludeしようとしてエラーが起こっています。 コンピュータは嘘をつかないという大前提で考えれば、質問者様がどこか勘違いをされているんじゃないかと思われますが…
k.nomura

2019/02/26 08:24

include_once を使わずに、 $page_info = get_page_by_path('固定ページ名'); を使う事で解決致しました。ありがとうございました!
guest

0

エラーの原因は、ファイルが存在していないからです。

こちらのアドバイスで解りました!
固定ページを読み込む際は、include_once を使うのではなく、
下記の関数を使う事で解決致しました。

$page_info = get_page_by_path('固定ページ名');
$page = get_post($page_info);
echo $page->post_content;

ありがとうございました!

投稿2019/02/26 08:25

k.nomura

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Takumiboo

2019/02/26 09:12

「WordPressにて記事を出力し、それをincludeしようとしたのですが」 「WordPressで書き出されたページをincludeするのは」 これらの質問文から、WordPressにて出力されたHTMLが必要なのかと思っていました(おそらくCHERRYさんも)。 また、includeはPHPスクリプトを読み込むためのものなのに、とも思っていました。 最初から「固定ページの中身を読み込みたい」と書いてくださっていれば、もっとスムーズに回答が集まっていたかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問