wordpress - WP Customizer 主题设置在 wp 数据库还原/迁移后消失
问题描述
我正在尝试使用定制器定制的主题迁移现有的 wordpress。我可以启动并运行 wordpress,但所有的主题定制都消失了。我将问题缩小到数据库中的定制器和 wp-options 表。每当我访问/重新加载网站时,选项 theme_mods_{theme-name} 的 option_value 就会被重置。如果我通过定制器进行更改,它们确实会出现,但如果我更改数据库中 option_value 的值,则会删除整个主题定制。
我正在使用托管在 IIS 上的 wordpress,数据库是 MySql 5.x(不知道确切的版本)。
解决方案
好的,我一直在面对这个问题一段时间,终于解决了。这个答案让我走上了正轨:在服务器上上传 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 ";}
推荐阅读
- python - discord.py如何在会员注册discord并加入服务器时获取信息
- reactjs - 努力模拟自定义反应钩子
- python - 熊猫 - 没有 for 循环的正体积指数
- rust - `const fn` 中不允许带有 match` 的货物编译错误
- azure-java-tools - 运行 azure-webapp-maven-plugin 配置的 SSL 问题
- sdl - 访问 Emscripten 实例上的 SDL 属性
- php - Laravel:使用空值更新输入
- python - 列表理解:每个循环的多维项
- java - 为 UserCredentials 和 UserPermissions 设计带有嵌入式类的 Spring-Security UserDetails 类
- html - 你们能帮帮我吗?为什么引导卡留在移动视图中