【问题标题】:integrating Wordpress with Symfony将 Wordpress 与 Symfony 集成
【发布时间】:2010-12-03 03:04:57
【问题描述】:

我有一个使用 Symfony 1.2 构建的网站。我正在尝试将 Wordpress 2.8.4 集成到其中来为我的博客提供动力。我按照http://www.theodo.fr/blog/2009/03/integrate-wordpress-into-symfony/ 的说明进行操作,包括http://www.theodo.fr/blog/2009/03/integrate-wordpress-into-symfony/comment-page-1/#comment-573 的cmets 中的两个步骤。我的 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 的过程中正在消亡。如何解决这个问题?

【问题讨论】:

    标签: wordpress symfony1 integration


    【解决方案1】:

    我已经为 theodo.fr 上的有用文章编写了后续指南,该文章适用于最新版本的 WordPress,并包含升级步骤:http://blog.codeclarity.com/2009/12/02/integrating-symfony-and-wordpress/。我相信你的冲突是由 Symfony 和 WordPress 定义的 esc_js 函数。如果您在第 4 步中运行我的命令,您应该可以使用最新版本。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      我尝试了一段时间,但无法让它在 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

      【讨论】:

        猜你喜欢
        • 2011-09-04
        • 2014-01-26
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 2023-01-30
        • 2016-07-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多