WP 数据库恢复/迁移后,WP 定制器主题设置消失

问题描述 投票:0回答:2

我正在尝试使用定制程序定制的主题迁移现有的 WordPress。 我可以启动并运行 WordPress,但所有主题自定义都消失了。我将问题缩小到定制器和数据库中的 wp-options 表。每当我访问/重新加载网站时,选项 theme_mods_{theme-name} 的 option_value 就会重置。如果我通过定制器进行更改,它们确实会出现,但如果我更改数据库中 option_value 的值,则整个主题定制都会被删除。

我使用的是托管在IIS上的wordpress,数据库是MySql 5.x(不知道确切的版本)。

wordpress wordpress-theming
2个回答
3
投票

好吧,这个问题我也困扰了一段时间,终于解决了。这个答案让我走上了正轨:在服务器上上传 WordPress 网站时显示默认主题

迁移时,您可能使用查找和替换通过 SQL 文件更改了 URL。问题是 wp_options 表中的

theme_mods_{theme-name}
条目被编码为具有以下格式的对象:
type:length:value
因此,改变一个选项的值,你也可能会改变他的长度。如果长度与值不匹配,WP 会认为该对象无效,并将选项重置为默认值
a:1:{s:18:"custom_css_post_id";i:-1;}
,从而破坏您的菜单和其他自定义选项。

示例:

在本地主机上工作:

a:4:{s:18:"custom_css_post_id";i:-1;s:18:"nav_menu_locations";a:5:{s:6:"menu-1";i:1120;s:6: "menu-2";i:1125;s:8:"顶级菜单";i:1120;s:8:"footer-1";i:1120;s:8:"footer-2";i: 1125;}s:9:“我的选项”;s:29:“洛雷姆 ipsum";s:15:"posts_row_image";s:32:"http://localhost/lorem/dolor.png";}

在远程服务器上无效:

a:4:{s:18:"custom_css_post_id";i:-1;s:18:"nav_menu_locations";a:5:{s:6:"menu-1";i:1120;s:6: "menu-2";i:1125;s:8:"顶级菜单";i:1120;s:8:"footer-1";i:1120;s:8:"footer-2";i: 1125;}s:9:“我的选项”;s:29:“洛雷姆 ipsum";s:15:"posts_row_image";s:32:"http://mydistantwebsite.com/lorem/dolor.png";}

更正长度,在远程服务器上工作:

a:4:{s:18:"custom_css_post_id";i:-1;s:18:"nav_menu_locations";a:5:{s:6:"menu-1";i:1120;s:6: "menu-2";i:1125;s:8:"顶级菜单";i:1120;s:8:"footer-1";i:1120;s:8:"footer-2";i: 1125;}s:9:“我的选项”;s:29:“洛雷姆 ipsum";s:15:"posts_row_image";s:43:"http://mydistantwebsite.com/lorem/dolor.png";}


0
投票

Manu 的答案是正确的。我可以添加一个小建议:通过 sql 请求更新序列化数据是一个烧脑的过程。唯一合理的方法是使用 wp-cli 搜索替换工具。

搜索/替换智能处理PHP序列化数据,并且不改变主键值。 https://developer.wordpress.org/cli/commands/search-replace/

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.