Как включить функции Wordpress в пользовательский файл .php?

30

Как включить функции Wordpress в пользовательский .php файл?

Подробно: у меня есть каталог под моей темой (Constructor) с именем reports. Они содержат .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

Теги:
include

4 ответа

58
Лучший ответ

Ты на правильном пути. Вместо этого попробуйте:

require_once("../../../../wp-load.php");
  • 1
    Спасибо, это решение!
  • 3
    это прекрасное решение, но оно загрузит весь сайт wp со всеми установленными плагинами и темами ... это нарушение принципа yagni en.wikipedia.org/wiki/You_are't_gonna_need_it
Показать ещё 9 комментариев
9

Более профессиональный способ без точки, если WordPress был корнем документа:

require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
  • 5
    WordPress не обязательно находится в корне документа.
  • 0
    Также вам нужно использовать rtrim document_root для прямой косой черты
2
require_once(dirname(__FILE__) . '/options.php');

Это лучший способ включить файл в wordpress

  • 3
    Он не спрашивал, как включить файл в Wordpress. Он хотел загрузить Wordpress из внешнего PHP-файла. Ваше решение не будет работать.
  • 0
    Он знает об этом, я уверен. Он добавляет к обсуждению. Теперь я собираюсь использовать этот метод + wp-load.php. ;)
0

Хорошо, если у кого-то установлены более новые версии PHP (ver >= 5.5.x), тогда они также могут попробовать следующий код в корневом каталоге script в самом веб-сайте 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";

Я думаю, что это более прямой и чистый подход и не требует ручного добавления косой черты и изменения директив на ...

Надеюсь, это поможет кому-то.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню