首页 > 解决方案 > WP Customizer 主题设置在 wp 数据库还原/迁移后消失

问题描述

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

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

标签: wordpresswordpress-theming

解决方案


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

迁移时,您可能使用查找和替换通过 SQL 文件更改了 URL。问题是theme_mods_{theme-name}wp_options 表中的条目被编码为具有这种格式的对象: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:"top-menu";i:1120;s:8:"footer-1";i:1120;s:8:"footer-2";i:1125 ;}s:9:"my_option";s:29:"Lorem 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:"top-menu";i:1120;s:8:"footer-1";i:1120;s:8:"footer-2";i:1125 ;}s:9:"my_option";s:29:"Lorem 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:"top-menu";i:1120;s:8:"footer-1";i:1120;s:8:"footer-2";i:1125 ;}s:9:"my_option";s:29:"Lorem ipsum";s:15:"posts_row_image"; s:43 :" http://mydistantwebsite.com/lorem/dolor.png ";}


推荐阅读