wordpress在主题,插件等保存的基本编码字符串中替换localhost网址

时间:2015-06-04 03:58:25

标签: wordpress

对于从localhost托管wordpress站点到live server,需要将所有localhost url更改为live domain urls。完成和网站也加载正常,但没有任何媒体项目显示,因为它们在基本编码的字符串中。

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

在我的情况下,我正在使用BeTheme和视觉作曲家,其中包含实际页面内容和在db中编码的已保存基础。 它们包含许多媒体项目的硬编码完整网址。

我在.sql文件中使用db转储并查找并将所有localhost替换为live domain url ...但这是我卡住的地方!

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题并找到了一种方法。 我的例子是wp_postmeta表和Muffin的一些主题

要求:

  • 一些搜索替换插件(例如https://wordpress.org/plugins/search-and-replace/
  • 具有from_base64()函数(5.6.1及更高版本)
  • 的MySQL版本
  • (可能是可选的)一些meta_key来识别要解码的行,因为对巨大的表解码base64会使db服务器感到悲伤。

步骤:

  1. 备份您的数据库(!!!)

  2. 创建一个与wp_postmeta相同布局的表:

    CREATE TABLE wp_base64_dec LIKE wp_postmeta
    
  3. 从wp-postmeta

    中插入新表base64_decoded值
    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%')) ;
    
  4. 在wp中使用search-replace插件将“domain.net”替换为wp_base64_dec表中的“domain.com”。

  5. 替换原始表中的更改列:

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

由于某种原因,在应用@frater_sourcecode答案后,我出现了未序列化的错误,可能是因为一旦执行URL替换,指定的字符串长度就不匹配。

有一个官方的Muffin Builder URL替换工具。

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

这是一个WordPress插件。
我不确定为什么在任何地方都没有提到它,但我在Reddit上找到了它。

Source

答案 3 :(得分:-1)

如果从phpmyadmin导出数据库,则需要获取序列化数据。 你必须使用插件才能导出。

wp migrate db对你来说是一个很棒的插件。

https://wordpress.org/plugins/wp-migrate-db/