2009-10-01 3 views
3

У меня есть сайт, основанный на 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/#comment-573. Мой файл actions.class.php выглядит следующим образом:интеграция Wordpress с Symfony

<?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 ?> 

И мой сор-блог-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. Как это может быть исправлено?

ответ

3

Я написано руководство для последующей работы над полезной статьей о theodo.fr, которая работает с последними версиями WordPress и имеет шаги для обновления: http://blog.codeclarity.com/2009/12/02/integrating-symfony-and-wordpress/. Я считаю, что ваш конфликт - это функция esc_js, определенная как Symfony, так и WordPress. Если вы запустите мою команду на шаге 4, вам будет полезно перейти с последней версией. Надеюсь, это поможет.

+0

Фантастический. Это сработало очень хорошо. Спасибо за помощь. –

0

Я попытался какое-то время, но не смог заставить это работать в 2.8.4. Я, однако, получить примерно все работы с Wordpress 2.7.1, используя следующие ссылки и некоторые мастерить:

Step 1: Description of hacks necessary to make WordPress work inside Symfony.

Step 2: Share user information between Symfony and Wordpress

More code for step 2

Help setting up session database