Интеграция Wordpress с Symfony
У меня есть сайт, созданный с помощью Symfony 1.2. Я пытаюсь интегрировать Wordpress 2.8.4 в него, чтобы привести мой блог в действие. Я следовал инструкциям на http://www.theodo.fr/blog/2009/03/integrate-wordpress-into-symfony/, включая 2 шага в комментариях на http://www.theodo.fr/blog/2009/03/integrate-wordpress-into-symfony/comment-page-1/. Мой файл actions.class.php выглядит так:
<?php
class sfWordpressActions extends sfActions
{
public function executeIndex(sfWebRequest $request)
{
// Don't load symfony's I18N
$standard_helpers = sfConfig::get('sf_standard_helpers');
$standard_helpers = array_diff($standard_helpers, array('I18N'));
sfConfig::set('sf_standard_helpers', $standard_helpers);
define('WP_USE_THEMES', true);
chdir( dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'wordpress' );
global $wpdb;
ob_start();
require_once( 'wp-blog-header.php' );
$this->blog = ob_get_contents();
if (function_exists('is_feed') && is_feed())
{
ob_end_flush();
throw new sfStopException();
}
else
{
ob_end_clean();
}
}
}
?>
Мой indexSuccess.php просто
This is a test
<?php echo $blog ?>
И мой wp-blog-header.php
<?php
/**
* Loads the WordPress environment and template.
*
* @package WordPress
*/
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
require_once( dirname(__FILE__) . '/wp-load.php' );
// @HACK FABRICE
// All variables defined here are considered global by Wordpress
$local_global_vars = get_defined_vars();
foreach($local_global_vars as $local_name => $local_value)
{
$GLOBALS[$local_name] = $local_value;
}
// Don't create new global variables ourselves, and do not overwrite other global variables, for example $name...
unset($local_name, $local_value, $local_global_vars);
// @HACK FABRICE
wp();
// @HACK Fabrice
global $posts;
// @HACK Fabrice
require_once( ABSPATH . WPINC . '/template-loader.php' );
}
Вот моя проблема:
Как это, я ничего не получаю, когда я иду на страницу. Ни один из моих заголовков Symfony, никакого контента Wordpress, ничего. Когда я закомментирую строку "require_once( 'wp-blog-header.php');" в файле actions.class.php все работает нормально, но нет содержимого Wordpress. Это наводит меня на мысль, что Symfony умирает где-то в процессе включения Wordpress. Как это можно исправить?
2 ответа
Я написал дополнительное руководство к полезной статье на theodo.fr, которая работает с последними версиями WordPress и содержит шаги по обновлению: http://blog.codeclarity.com/2009/12/02/integrating-symfony-and-wordpress/. Я считаю, что ваш конфликт - это функция esc_js, определенная как Symfony, так и WordPress. Если вы запустите мою команду на шаге 4, вам следует использовать последнюю версию. Надеюсь, это поможет.
Я пытался некоторое время, но не смог заставить это работать в 2.8.4. Однако я получил почти все, что работает с Wordpress 2.7.1, используя следующие ссылки и некоторые изменения:
Шаг 1: Описание хаков, необходимых для работы WordPress внутри Symfony.
Шаг 2: Обмен информацией о пользователях между Symfony и Wordpress