web-dev-qa-db-ja.com

カスタム.phpファイルにWordPress関数を含めるには?

カスタム.phpファイルにWordPress関数を含めるにはどうすればよいですか?

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

致命的なエラー:15行目のROOT/public_html/wp-content/themes/constructor/reports/testreport.phpの未定義関数get_the_author_meta()の呼び出し

私はwp-blog-header.phpを含める必要があると信じるようになりました。 require_once("../../../../wp-blog-header.php");を使用します。これにより、次の404エラーが発生します。

WebアドレスのWebページが見つかりませんでした:ROOT/wp-content/themes/constructor/reports/testreport.php

(requireは正しいパスを指します。それをいじると、Warning:require_once(../../../ wp-blog-header.php):ストリームを開くことができませんでした...正しい。)

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

助けてくれてありがとう、Sziro

56
Sziro

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

require_once("../../../../wp-load.php");
98
seanbreeden

WordPress=がドキュメントのルートだった場合、ドットのないよりプロフェッショナルな方法:

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
21
Salam El-Banna

誰かがより新しい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";

これはより直接的でクリーンなアプローチであり、手動でスラッシュを追加したり、..によってディレクトリを変更したりする必要はないと思います。

これが誰かを助けることを願っています。

4
VST
require_once(dirname(__FILE__) . '/options.php');

これは、WordPressにファイルを含めるより良い方法です。

2

外部ファイルは、WordPress関数に簡単にアクセスできます。ファイルwp-load.php外部ファイルに。 wp-load.phpファイルは、WordPressインストールのルートにあります。例:ファイルがtest.php WordPressインストールのルートディレクトリにあります。

<?php
require_once('wp-load.php');
// Your custom code
?>

ソース: アクセス方法WordPress外部ファイルの関数

1
Aman Dhanda