WordPress:Running a Development Copy of WordPress

来自站长百科
跳转至: 导航、​ 搜索

怎样在一个数据库中运行两个WordPress的副本[ ]

这个方法是适用于 2.3.1版本 –但是你也可以在网页的底部为 2.5版本使用这个方法。

直到2.3.1版本的解决方法[ ]

主题和插件开发者通常面临的一个问题是,他们希望在变化的数据上测试你的插件,但是在测试时,希望不会将你的站点扰乱。

例如,我的在线站点位于http://www.ben-xo.com/v6/

但是我正在发展的站点位于http://localhost/~xo/ben-xo.com/dev/v6/

下面是一个解决办法(关于WordPress2的-在2.0.2上测试了),让你轻松地运行一个本地和一个远程的WordPress副本的安装不会更改你的数据库或者配置文件!

请注意当这个插件激活了,WordPress会忽视你在你的选项中的siteurlhome上的配置,因此你自己要解决这些配置。

hack 进入wp-includes/functions.php

/* 选项函数*/

function get_settings($setting) {

 global $wpdb;
 $value = wp_cache_get($setting, 'options');

   /* Ben XO's siteurl hack */
   if( 'siteurl' == $setting or 'home' == $setting ) {
   $_REAL_SCRIPT_DIR = realpath(dirname($_SERVER['SCRIPT_FILENAME'])); 
   // 这个网页目录的文件系统路径(index.php 或者其它的)
   $_REAL_BASE_DIR = realpath(dirname(__FILE__) . 
     DIRECTORY_SEPARATOR . '..'); 
   // 这个文件的母目录的文件系统路径    // (wp-includes在里面)
   $_MY_PATH_PART = substr( $_REAL_SCRIPT_DIR, strlen($_REAL_BASE_DIR)); 
   // <installation_path> 和网页之间的子文件夹部分
   $INSTALLATION_PATH = $_MY_PATH_PART
     ? substr( dirname($_SERVER['SCRIPT_NAME']), 0, -strlen($_MY_PATH_PART) )
     : dirname($_SERVER['SCRIPT_NAME'])
   ; 
   // 我们在<installation_path>的结尾部分减去了子文件夹, 
   // 我们只有了<installation_path> :)
   $value = 'http' . ($_SERVER['HTTPS'] ? 's' : null) .
            '://' . $_SERVER['HTTP_HOST'] . $INSTALLATION_PATH
   ;
 }
 /* end Ben XO's siteurl hack */

 if ( false === $value ) {
   if ( defined('WP_INSTALLING') )
     $wpdb->hide_errors();


在适当的位置有了这个hack之后,现在你可以为你的本地和远程WordPress安装使用同样的数据库和文件了。如果你想要使用一个远程数据库的话,可能你需要做的事就是将不同的设置放到wp-config.php中。

这个hack是以我对于PHP在线文件的评论为基础的。

请注意:如果你的服务器在安全的模式中运行PHP,这个hack并没有得到测试。如果你有什么问题,请将问题发表到 讨论网页上

wordpress 2.5 的解决办法[ ]

编辑文件wp-includes/options.php

在函数get_option中,在global $wpdb一行的后面添加Ben的hack。看起来像:

function get_option( $setting ) {

global $wpdb;

/* Ben XO's siteurl hack */

if( 'siteurl' == $setting or 'home' == $setting )

{

$_REAL_SCRIPT_DIR = realpath(dirname($_SERVER['SCRIPT_FILENAME'])); // 这个网页目录的文件系统路径 (index.php 或者其它的)

$_REAL_BASE_DIR = realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'); // 这个文件的母目录的文件系统路径 // (wp-includes 是在里面)

$_MY_PATH_PART = substr( $_REAL_SCRIPT_DIR, strlen($_REAL_BASE_DIR)); //在 <installation_path> 和网页之间的子文件夹部分

$INSTALLATION_PATH = $_MY_PATH_PART ? substr( dirname($_SERVER['SCRIPT_NAME']), 0, -strlen($_MY_PATH_PART) ) : dirname($_SERVER['SCRIPT_NAME']) ; // 我们在<installation_path>的尾部减去了子文件夹部分, // 我们只剩下了 <installation_path> :)

$value = 'http' . ($_SERVER['HTTPS'] ? 's' : null) . '://' . $_SERVER['HTTP_HOST'] . $INSTALLATION_PATH ;

return $value;

} /* end Ben XO's siteurl hack */


// 允许插件缩短选项 $pre = apply_filters( 'pre_option_' . $setting, false ); if ( false !== $pre ) return $pre;

// ...其它的函数继续运行 (不要复制这一行!)

This page is [[WordPress::Category:Stubs|marked]] as incomplete. You can help Codex by expanding it.