2009-10-01 7 views
3

J'ai un site construit avec Symfony 1.2. J'essaie d'y intégrer Wordpress 2.8.4 pour alimenter mon blog. J'ai suivi les instructions au http://www.theodo.fr/blog/2009/03/integrate-wordpress-into-symfony/, y compris les 2 étapes dans les commentaires au http://www.theodo.fr/blog/2009/03/integrate-wordpress-into-symfony/comment-page-1/#comment-573. Mon fichier actions.class.php ressemble à ceci:l'intégration de Wordpress avec 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(); 
    } 
    } 
} 
    ?> 

Mon indexSuccess.php est tout simplement

This is a test 
<?php echo $blog ?> 

Et mon wp-blog-header.php est

<?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'); 
} 

Voilà mon problème:

En l'état, je n'obtiens rien quand je vais à la page. Aucun de mes en-têtes Symfony, aucun contenu Wordpress, rien. Quand je commente la ligne "require_once ('wp-blog-header.php');" dans actions.class.php, tout fonctionne bien mais il n'y a pas de contenu Wordpress. Cela m'amène à croire que Symfony est en train de mourir quelque part dans le processus d'inclusion de la substance Wordpress. Comment cela pourrait-il être réparé?

Répondre

3

J'ai a écrit un guide de suivi de l'article utile sur theodo.fr qui fonctionne avec les dernières versions de WordPress et a des étapes pour la mise à niveau: http://blog.codeclarity.com/2009/12/02/integrating-symfony-and-wordpress/. Je crois que votre conflit est la fonction esc_js définie par Symfony et WordPress. Si vous exécutez ma commande à l'étape 4, vous devriez utiliser la dernière version. J'espère que cela pourra aider.

+0

Fantastique. Cela a très bien fonctionné. Merci pour l'aide. –