【问题标题】:wordpress replacing localhost urls inside base encoded strings saved by theme, pluigns etcwordpress 替换主题、插件等保存的基本编码字符串中的 localhost url
【发布时间】:2015-08-18 12:37:39
【问题描述】:

为了将 wordpress 站点从 localhost 托管到实时服务器,需要将所有 localhost url 更改为实时域 url。完成并且站点也可以正常加载,但没有任何媒体项显示在基本编码字符串中。

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

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

我在 .sql 文件中获取了 db 转储,并找到所有 localhost 并将其替换为实时域 url...但这就是我卡住的地方!

【问题讨论】:

    标签: wordpress


    【解决方案1】:

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

    要求:

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

    步骤:

    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 中的搜索替换插件将 wp_base64_dec 表中的“domain.net”替换为“domain.com”。

    5. 替换原表中改变的列:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        Source

        【讨论】:

        • 我尝试安装和运行你提到的插件,它并没有改变 WP Bakery 中 base64 编码的原始 HTML 中的 URL。
        • 这不是 WPbakery 而是松饼制造商。对于作曲家使用 GoLive 插件
        • 谢谢你 Luka 我非常感谢你的帮助并指出了这一点。你是对的,它不适合 WPbakery。
        • 是的,谢谢 Luka,GoLive 与 WPbakery 完美配合!!
        • 谢谢,太棒了!
        【解决方案4】:

        如果您从 phpmyadmin 导出数据库,那么您想要获取序列化数据。 您必须使用插件才能导出。

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

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

        【讨论】:

        • 它不是序列化的数据。基本编码和序列化不是一回事。
        • 你试过这个插件了吗?
        猜你喜欢
        • 2017-02-26
        • 2018-02-12
        • 1970-01-01
        • 2018-02-16
        • 2020-06-08
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多