要将wordpress站点从localhost托管到live server,需要将所有localhost URL更改为live域URL。完成,站点也可以正常加载,但没有任何媒体项显示,因为它们位于基本编码字符串中。
但是如何替换主题和其他插件保存的基本编码字符串中的URL呢?
在我的例子中,我使用的是BeTheme和VisualComposer,它包含实际的页面内容和数据库中编码的已保存的基本内容。它们包含许多媒体项目的硬编码完整URL。
我在一个小时内把数据库转储了。sql文件,查找并替换所有本地主机到live域url。。。但这就是我卡住的地方!
我遇到了同样的问题,并找到了一种方法来做到这一点。我的例子是wp_Posteta表和Muffin的一些主题
要求:
步骤:
>
备份数据库(!!!)
创建与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上找到了它。
来源