#php #wordpress #api
#php #wordpress #API
Вопрос:
Я получаю доступ к API WordPress из своего PHP-кода, просто включая wp-blog-header.php и с помощью get_posts().
Это работает нормально, когда мой PHP-код находится на том же уровне, что и каталог WP. Например:
/blog/[..wp files..]
/index.php
В index.php , У меня есть:
require('blog/wp-blog-header.php');
$post = get_posts(...);
и работает довольно хорошо.
НО, когда я пытаюсь сделать то же самое с кодом внутри каталога, например:
/blog/[..wp files..]
/folder/index.php
и в folder/index.php У меня есть:
require('../blog/wp-blog-header.php');
$post = get_posts(...);
это всегда заставляет мое приложение перенаправляться на установку WP (wp-admin/install.php ) и не работает.
Есть идеи? Можно ли использовать API из каталога?
Блог настроен правильно и работает нормально сам по себе.
Редактировать: трассировка стека показывает, когда приложение перенаправляет на wp_not_installed() при использовании внутри папки
6 0.4052 3402748 require_once( '/usr/www/juanjo/NuevaWebJuanjo/blog/wp-load.php' ) ../class_wordpress.php:11
7 0.4054 3408296 require_once( '/usr/www/juanjo/NuevaWebJuanjo/blog/wp-config.php' ) ../wp-load.php:30
8 0.4063 3487064 require_once( '/usr/www/juanjo/NuevaWebJuanjo/blog/wp-settings.php' ) ../wp-config.php:19
9 1.3650 6103276 wp_not_installed( ) ../wp-settings.php:100
10 1.6258 7676148 wp_redirect( ) ../load.php:408
11 1.6261 7684480 header ( ) ../pluggable.php:890
Спасибо!
Комментарии:
1. Отредактировал вопрос, чтобы добавить трассировку стека при сбое require () и перенаправить на wp_not_installed();
2. @ Juanjico — вы что-нибудь поняли с этой проблемой, у меня точно такая же проблема
Ответ №1:
Для всего WordPress, доступ к которому осуществляется за пределами системы WordPress, вы ДОЛЖНЫ включить wp-load.php
include("/absolute/path/to/wp-load.php");
//do whatever you want
Комментарии:
1. Это еще хуже. Если я заменю require (‘blog/wp-blog-header.php ‘); по требованию (‘blog/wp-load.php ‘); он всегда вызывает wp_not_installed(), независимо от того, находится ли мое приложение в корне или внутри папки. В любом случае, спасибо.
2. пожалуйста, можете ли вы просто попробовать в любом из своих проектов включить WP из папки? Просто создайте папку, поместите index.php с помощью include() и посмотрите, были ли вы перенаправлены на установку? Я не знаю, проблема ли в самом WP (плохая конфигурация) или в чем. Спасибо.
Ответ №2:
Я думаю, что @silent означает, что для его работы вам нужно включить оба. Однако мне нужны оба, когда я запускаю WordPress.
Комментарии:
1. Если я просто требую (‘blog/wp-blog-header.php ‘); перенаправляет на wp_not_installed() (при использовании внутри папки, а не в корневом каталоге). Если я просто требую (‘blog/wp-load.php ‘); перенаправить на wp_not_installed() в (внутри папки или в корне). Таким образом, невозможно включить оба, потому что первое перенаправляет на wp_not_installed() и никогда не выполняет второе require() .
Ответ №3:
Взгляните на это http://www.webopius.com/content/139/using-the-wordpress-api-from-pages-outside-of-wordpress
По-видимому, добавление:
define('WP_USE_THEMES', false);
прямо перед:
require('blog/wp-blog-header.php');
делает трюк.