Доступ к API WordPress в моем приложении PHP

#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');
 

делает трюк.