Как включить функции WordPress в пользовательский .php-файл?
В деталях: у меня есть каталог под моей темой (Constructor) с именами отчетов. Они содержат .php-файлы, которые генерируют отчеты из данных с сайта с DOMPDF для загрузки. Для этого я хотел бы использовать функции, которые предоставляет механизм 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?
Спасибо за помощь, Sziro
Ты на правильном пути. Попробуйте это вместо этого:
require_once("../../../../wp-load.php");
Более профессиональный способ без точек, если WordPress был корнем документа:
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
require_once(dirname(__FILE__) . '/options.php');
Это лучший способ включить файл в wordpress
Хорошо, если у кого-то установлены более новые версии 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";
Я предполагаю, что это более прямой и чистый подход и не требует ручного добавления слэшей и изменения директив на.
Надеюсь, это поможет кому-то.