我正在为现有网站创建一个WordPress子主题,原始开发人员对WordPress没有特别的经验,并且在原始主题和插件中编辑了代码。我正在慢慢地将代码编辑从父主题分离到子主题。
我已经在wp_options中的行中复制了option_name为theme_mods_ {parentthemename}到theme_mods_ {childthemename},这通常足以在主题设置中进行传输。
但是,该网站使用21个带有46个活动小部件的侧边栏,还有85个非活动小部件。当切换到具有相同侧边栏设置(向外外观)的子主题时,53个小部件被放置在侧边栏中,看起来像一个随机顺序。侧边栏甚至不包含相同数量的小部件。
以前没有主题名称的主题。
这些小部件乱七八糟的原因有什么特别的原因吗?我需要传输数据库中的其他选项还是我需要手动更新的内容?
非常感谢任何想法
答案 0 :(得分:1)
将CSS和HTML从修改后的父主题移动到子主题是创建子主题时要做的标准操作。尝试将数据库选项从父主题移动到子主题是一件不寻常的事情,由于数据库中的选项数据,它会变得混乱。
主题在数据库中的序列化数据中存储一些网站和主题选项(如颜色和标题图像以及窗口小部件设置),并使用phpmyadmin直接编辑选项表中的选项将破坏这些选项,因为编辑的字符串长度不同,即,父主题的字符串长度的名称与子主题的不同。除非你反序列化然后重新序列化数据;但是在phpmyadmin中编辑不会解释这一点。
除非您更改父主题在数据库中保存这些选项的方式,否则无法对序列化问题执行任何操作。已经检查了wordpress.org主题目录中提供的WordPress主题的标准编码实践,例如保存选项;一些私人主题不遵循这些准则。
但是,一旦您创建了子主题并重置了窗口小部件,即使您更改为其他主题,然后更改回该子主题,选项仍将保留在数据库中。
您可以尝试像interconnectit.com WordPress Serialized PHP Search Replace Tool这样的工具,通过字符串正确地反序列化/重新序列化数据库中的数据。我不知道它是否会起作用,但我已经多次使用它通过查找/替换域来将WordPress站点从一个域移动到另一个域,这可能发生在主题选项和窗口小部件数据中。再一次,它取决于您的主题如何在数据库中保存选项数据。