2013-03-08 9 views
34

Wordpressの機能をカスタム.phpファイルに含めるにはどうしたらいいですか?カスタム.phpファイルにWordpress関数を含めるには?

詳細:私は自分のテーマ(コンストラクター)の下にレポートという名前のディレクトリを持っています。これらのファイルには、DOMPDFをダウンロードしてサイトからのデータからレポートを生成する.phpファイルが含まれています。これらについては、Wordpressエンジンが提供する関数、例えばget_the_author_meta('user_firstname', $user_id)を使用したいと思います。これらを使用すると、次のエラーが発生します。

Fatal error: Call to undefined function get_the_author_meta() in ROOT/public_html/wp-content/themes/constructor/reports/testreport.php on line 15

私はwp-blog-header.phpを含める必要があると考えています。私はrequire_once("../../../../wp-blog-header.php");を使用します。これで私は、次の404エラーを取得:

No webpage was found for the web address: ROOT/wp-content/themes/constructor/reports/testreport.php

(正しいパスにポイントを必要とし、私はそれをいじる場合、私は警告を取得:するrequire_once(../../../ WP-blog- header.php):ストリームを開くことができませんでした...したがって、パスは正しくなければなりません。

見落としているものはありますか?なぜこのwpファイルを含めることができないのですか? wp関数を含める正しい方法は何ですか?

助けてくれてありがとう

答えて

62

あなたは正しい道を歩いています。代わりにこれを試してみてください:

require_once("../../../../wp-load.php"); 
+1

ありがとう、それは解決策です! – Sziro

+2

これは良い解決策ですが、それはインストールされたすべてのプラグインとテーマを含むすべてのwpサイトをロードします...このyagni原則の違反http://en.wikipedia.org/wiki/You_aren't_gonna_need_it – HMagdy

+2

これはロード中だったかもしれませんあなたが元の質問を読んだら、彼は外部のPHPファイルから読み込む方法を尋ねていた。 – seanbreeden

2
require_once(dirname(__FILE__) . '/options.php'); 

ワードプレスは、ドキュメントルートだった場合、これはドット事なく、より専門的な方法ワードプレス

+3

彼はWordpressにファイルを含める方法を尋ねていませんでした。彼は外部PHPファイルからWordpressをロードしたかったのです。あなたの解決策はうまくいかないでしょう。 – seanbreeden

+0

彼は私が確信していることを認識しています。彼は議論に加わります。今度はこのメソッド+ wp-load.phpを使用します。;) –

11

にファイルを含めるには良い方法です:

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php'); 
+4

WordPressは必ずしもドキュメントルートにあるとは限りません。 –

+0

また、rtrim document_rootにスラッシュを入れる必要があります –

0

もし誰かが新しいPHPバージョンをインストールしていれば(ver> = 5.5.x)、WordPressのウェブサイトディレクトリのルートスクリプトで以下のコードを試すこともできます:

<?php 
define("WP_ROOT", __DIR__); 
define("DS", DIRECTORY_SEPARATOR); 
require_once WP_ROOT . DS . "wp-load.php"; 

それとも

<?php 
define("WP_ROOT", __DIR__); 
define("DS", DIRECTORY_SEPARATOR); 
require_once WP_ROOT . DS . "wp-blog-header.php"; 

私は、これはより直接的かつクリーンなアプローチであるとスラッシュを追加し..でdiretoriesを変更し、手動で関与しないと思います。

これは誰かを助けることを望みます。

関連する問題