Загрузка функций Wordpress внутри Zend Framework - PullRequest
4 голосов
/ 22 августа 2011

Hio,

Итак, у меня есть сайт, который использует Zend Framework в качестве MVC (www.site.com), и отдельный блог, созданный в WordPress (www.site.com/blog) натот же сервер, но Я хочу иметь возможность использовать функции Wordpress на разных страницах для извлечения сообщений из WordPress.

В настоящее время для веб-серверов DocumentRoot установлено значение /httpdocs/public.public содержит символическую ссылку на /httpdocs/blog (у меня есть Опции FollowSymlinks на)

Все запросы направляются через правила htaccess, которые либо перенаправляют его в httpdocs / public / index.php (который затем загружает Zend), либообычный файл / другая область вне приложения Zend.

В качестве примера кода в WordPress используется следующее:

define('WP_USE_THEMES', false);
require(APPLICATION_PATH .'/../blog/wp-blog-header.php');

Но ... это просто пытается перенаправить меня с site.com/page до site.com/page/wp-admin/install.php (которого не существует, и поэтому я получаю сообщение об ошибке «эта страница перенаправляется так, что это никогда не завершится» из firefox, даже если site.com/blog настроен и работает отлично.По какой-то причине он, похоже, не осознает, что это так (вероятно, из-за проблем с путями ...)

Кто-нибудь знает, как я мог это исправить ??

Примечание: в данный момент япросто запросите базу данных wordpress, но это не сработает должным образом, потому что неправильно форматирует содержимое публикации.

Ответы [ 2 ]

3 голосов
/ 27 октября 2011

Бенно,

Я думаю, что нашел решение для этого. azkotoki был прав, похоже, проблема в области видимости при включении файлов wp-blog-header.php или wp-load.php.

Заголовки должны быть включены в глобальную область, иначе Wordpress запутается и не думает, что его установили, и перенаправляет на wp-admin/install.php.

Я сделал свой require_once вызов прямо вместе с моим вызовом Zend-приложения require_once в index.php каталога моего приложения Zend /public/. К сожалению, это означает, что заголовок Wordpress будет включен, даже если он не нужен, но, по крайней мере, он работает.

... Из /public/index.php ...

/** Zend_Application */
require_once 'Zend/Application.php';

/** Wordpress Application */
require_once 'wordpress/wp-load.php';

Надеюсь, это поможет, так как это сводило меня с ума!

3 голосов
/ 05 октября 2011

Это известная проблема (протестированная с WP 3.2.1 на момент написания): http://wordpress.org/support/topic/calling-wp-blog-headerphp-from-inside-a-php-function

Решение:

Избегайте включения ядра WordPress в любой метод класса или функцию. Если это все еще не работает, проверьте содержимое debug_backtrace(), чтобы увидеть, действительно ли вы находитесь в глобальной области действия.

Объяснение:

Wordpress устанавливает некоторые переменные (прямое назначение, не использует $ GLOBALS) во время инициализации. Если он не инициализирован в глобальной области видимости, эти переменные принадлежат текущей области функции или метода. В результате эти переменные не могут быть приняты основными функциями WordPress, так как они используют ключевое слово global.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...