我正在尝试迁移具有定制程序定制主题的现有wordpress。 我可以启动并运行wordpress,但是所有主题定制都消失了。我将问题缩小到数据库中的定制程序和wp-options表。每当我访问/重新加载网站时,都会重置选项theme_mods_ {theme-name}的option_value。如果我通过定制程序进行更改,它们确实会出现,但是如果我在数据库中更改option_value的值,则会删除整个主题自定义。
我正在使用IIS上托管的wordpress,数据库是MySql 5.x(不知道确切的版本)。
答案 0 :(得分:0)
好的,我已经遇到了一段时间了,终于解决了。这个烦恼使我走上正轨:Showing default theme when uploading WordPress website on server
在迁移时,您可能使用find&replace在SQL文件中更改了URL。问题是wp_options表中的theme_mods_{theme-name}
条目被编码为具有以下格式的对象:type:length:value
因此,更改一个选项的值,您可能也会更改其长度。如果长度与值不匹配,WP将认为该对象无效,并将选项重置为默认的a:1:{s:18:"custom_css_post_id";i:-1;}
,从而破坏菜单和其他自定义选项。
示例:
在localhost上工作:
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:“菜单2”; i:1125; s:8:“顶部菜单”; i:1120; s:8:“页脚1”; i:1120; s:8:“页脚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:“菜单2”; i:1125; s:8:“顶部菜单”; i:1120; s:8:“页脚1”; i:1120; s:8:“页脚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:“菜单2”; i:1125; s:8:“顶部菜单”; i:1120; s:8:“页脚1”; i:1120; s:8:“页脚2”; i:1125;} s:9:“ my_option”; s:29:“ Lorem ipsum“; s:15:” posts_row_image“; s:43 :” http://mydistantwebsite.com/lorem/dolor.png“;}