【问题标题】:Wordpress local clone not working properlyWordPress 本地克隆无法正常工作
【发布时间】:2013-07-30 02:07:39
【问题描述】:

我正在 Wordpress 上开发一个门户网站,并且有很多插件、帖子、类别等。现在,我想同时尝试三个主题。

所以,我在本地 apache 的 webroot 中创建了两个文件夹副本:

/wpSandbox/ [original, working still !]
/wpSandbox2/ [copy 1]
/wpSandbox3/ [copy 2]

同样,我使用 phpMyAdmin 为原始门户网站复制了数据库 dbWordpress 两次,然后在 wp-config.php 中进行了相应更改

现在,这两个新副本(我希望这是测试新主题的基础)无法登录到管理员。

其实

127.0.0.1/wpSandbox2/wp-admin/ 

实际上重定向到:

127.0.0.1/wpSandbox/wp-admin/ 

并且无法使用与原始副本相同的凭据登录... :(

请告诉我为什么会发生这种情况,是否需要在 wp-config 中为副本更改其他内容..?

问候

【问题讨论】:

  • 转到您的数据库管理界面并为您的 wpSandbox2 设置更改 url 以反映这一点,因为您复制了数据库,它仍然是 wpSandbox/ 的引荐来源地
  • 您好,您需要更改为您的 wp 的其他 2 个副本创建的数据库中“wp_options”表中的 siteurl 和 home,

标签: php wordpress apache session


【解决方案1】:

更新 as_options set option_value="{new_wp_url}" where option_name='siteurl'; 更新 as_options set option_value="{new_wp_url}" where option_name='home'; UPDATE as_posts SET guid = REPLACE(guid, '{old_url}', '{new_url}') UPDATE as_posts SET post_content = REPLACE(post_content, '{old_url}', '{new_url}')

以下是您可以运行以将值更改为 wordpress 网站的新 url 的 SQL 查询。

UPDATE {wp_table_prefix}_options set option_value="{new_url}" where option_name='siteurl';
UPDATE {wp_table_prefix}_options set option_value="{new_url}" where option_name='home';
UPDATE {wp_table_prefix}_posts SET guid = REPLACE(guid, '{old_url}', '{new_url}');
UPDATE {wp_table_prefix}_posts SET post_content = REPLACE(post_content, '{old_url}', '{new_url}');
  • {wp_table_prefix} 替换为您的 wordpress 表格前缀。
  • {{new_url}} 替换为您的新 wordpress 网站网址。
  • {{old_url}} 替换为您的旧 wordpress 网站网址。在这种情况下 127.0.0.1/wpSandbox

之后,您可以运行 SQL 查询并通过新的 wordpress 网址访问新的 wordpress 站点。一切都应该正常。

我经常使用上述 SQL 并且到目前为止一直为我工作。如果您有任何问题,请告诉我们。基本上上面的 SQL 查询等价于上面提供的@doitlikejustin 代码。

【讨论】:

    【解决方案2】:

    重定向问题是因为您原始 wordpress 设置中的siteurl。在你的wp-config.php 中添加这些行。您可能需要更改网址以满足您的需求。

    define('WP_HOME','http://127.0.0.1/wpSandbox2');
    define('WP_SITEURL','http://127.0.0.1/wpSandbox2');
    

    【讨论】:

      【解决方案3】:

      您可能需要使用新 URL 更新您的数据库。这就是它重定向的原因。 复制下面的代码并在 phpMyAdmin 中运行它(确保您更改顶部的 3 个变量...我将它们设置为我认为您应该设置的值,但它可能与您的数据库设置方式不同)

      SET @prefix = "wp_";
      SET @old = "127.0.0.1/wpSandbox";
      SET @new = "127.0.0.1/wpSandbox2";
      
      SET @sql1 = CONCAT('UPDATE ', @prefix, 'options SET option_value = REPLACE(option_value,?,?)');
      SET @sql2 = CONCAT('UPDATE ', @prefix, 'posts SET guid = REPLACE(guid,?,?)');
      SET @sql3 = CONCAT('UPDATE ', @prefix, 'posts SET post_content = REPLACE(post_content,?,?)');
      
      PREPARE update1 FROM @sql1;
      PREPARE update2 FROM @sql2;
      PREPARE update3 FROM @sql3;
      
      EXECUTE update1 USING @old, @new;
      EXECUTE update2 USING @old, @new;
      EXECUTE update3 USING @old, @new;
      
      DEALLOCATE PREPARE update1;
      DEALLOCATE PREPARE update2;
      DEALLOCATE PREPARE update3;
      

      要点:https://gist.github.com/doitlikejustin/6091841

      只是有关此代码/要点的一些信息...我一直在移动 WordPress 网站。这只是我编写的一些 SQL,以便更新数据库花费更少的时间,并且您不必担心手动更新 URL。它会自动更新 WP 选项表和 WP 帖子表。

      【讨论】:

      • 感谢您的回复。只需设置 WP_HOME 和 WP_SITEURL 就可以了……虽然不完全知道为什么:(
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 2019-10-03
      • 2019-01-30
      相关资源
      最近更新 更多