提问者:小点点

WordPress替换localhostURL内的基本编码字符串保存的主题,插件等


要将wordpress站点从localhost托管到live server,需要将所有localhost URL更改为live域URL。完成,站点也可以正常加载,但没有任何媒体项显示,因为它们位于基本编码字符串中。

但是如何替换主题和其他插件保存的基本编码字符串中的URL呢?

在我的例子中,我使用的是BeTheme和VisualComposer,它包含实际的页面内容和数据库中编码的已保存的基本内容。它们包含许多媒体项目的硬编码完整URL。

我在一个小时内把数据库转储了。sql文件,查找并替换所有本地主机到live域url。。。但这就是我卡住的地方!


共3个答案

匿名用户

我遇到了同样的问题,并找到了一种方法来做到这一点。我的例子是wp_Posteta表和Muffin的一些主题

要求:

  • 一些搜索替换插件(例如https://wordpress.org/plugins/search-and-replace/)
  • MySQL版本具有from_base64()函数(5.6.1及更高版本)
  • (可能是可选的)一些meta_key来确定要解码的行,因为解码大表的bas64会让数据库服务器很难过。

步骤:

>

  • 备份数据库(!!!)

    创建与wp_Posteta布局相同的表:

    CREATE TABLE wp_base64_dec LIKE wp_postmeta
    

    插入到新表中base64_decoded从wp-postmeta中选择的值

    INSERT INTO wp_base64_dec(`meta_id`, `post_id`,`meta_key`,`meta_value`)
    SELECT `wp_postmeta`.`meta_id` AS `meta_id`,
      `wp_postmeta`.`post_id` AS `post_id`,
      `wp_postmeta`.`meta_key` AS `meta_key`,
       FROM_BASE64(`wp_postmeta`.`meta_value`) AS `meta_value` 
    FROM `wp_postmeta` WHERE 
      ((`wp_postmeta`.`meta_key` = 'mfn-page-items') AND
      (FROM_BASE64(`wp_postmeta`.`meta_value`) LIKE '%domain.net%')) ;
    

    使用wp中的搜索替换插件将wp\u base64\u dec表中的“domain.net”替换为“domain.com”。

    替换原始表中更改的列:

    REPLACE wp_postmeta
    SELECT 
      `meta_id`,`post_id`,`meta_key`,
       TO_BASE64(`meta_value`) as `meta_value`
    FROM `wp_base64_dec`
    

  • 匿名用户

    简短的回答是:你不能。Visual Composer,为了有所帮助,bas64对数据库中的URL进行编码。搜索和替换(包括wp-cli的版本)对这些不起作用。这是一个巨大的限制,WPBakery意识到了这一点——但没有提供解决方案。

    匿名用户

    出于某种原因,在应用@frater_sourcecode answer之后,我得到了一个非序列化错误,可能是因为一旦我们进行URL替换,指定的字符串长度就不匹配了。

    有一个官方的松饼生成器URL替换工具。

    https://muffingroup.com/plugins/mfn-migrate-cb.zip

    这是一个WordPress插件<我不知道为什么没有提到它,但我在Reddit上找到了它。

    来源