Ответ 1
Ты на правильном пути. Вместо этого попробуйте:
require_once("../../../../wp-load.php");
Как я могу включить функции WordPress в пользовательский файл .php?
Подробно: у меня есть каталог под моей темой (конструктор) с именем reports. Они содержат файлы .php, которые генерируют отчеты из данных с сайта с помощью DOMPDF для загрузки. Для этого я хотел бы использовать функции, которые предоставляет движок WordPress, например, get_the_author_meta( 'user_firstname', $user_id )
. Если я использую их, я получаю (естественно) следующую ошибку:
Неустранимая ошибка: вызов неопределенной функции get_the_author_meta() в ROOT/public_html/wp-content/themes/constructor/reports/testreport.php в строке 15
Я был убежден, что мне нужно включить wp-blog-header.php. Я использую require_once("../../../../wp-blog-header.php");
, При этом я получаю следующую ошибку 404:
Веб-страница для этого адреса не найдена: ROOT/wp-content/themes/constructor/reports/testreport.php
(Требование указывает на правильный путь. Если я возлюсь с ним, я получаю предупреждение: require_once (../../../wp-blog-header.php): не удалось открыть поток... Таким образом, путь должен быть правильным.)
Есть что-то, что я пропускаю? Почему я не могу включить этот файл wp? Как правильно включить функции wp?
Спасибо за помощь, Сзиро
Ты на правильном пути. Вместо этого попробуйте:
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";
Я полагаю, что это более прямой и чистый подход, который не предполагает добавления слешей вручную и изменения директорий с помощью ..
Надеюсь, это кому-нибудь поможет.
Внешние файлы могут легко получить доступ к функциям WordPress. Вам просто нужно включить файл wp-load.php
во внешний файл. Файл wp-load.php
находится в корне вашей установки WordPress. Пример: предположим, что ваш файл test.php
находится в корневом каталоге установки WordPress.
<?php
require_once('wp-load.php');
// Your custom code
?>
Источник: Как получить доступ к функциям WordPress во внешнем файле