有两种解决方案。
最简单的方法是让数据库表从wp_
.
当然,这并不总是一个选项,例如多站点安装或您不控制主机环境的情况。
我查看了代码的其他部分,它们在构造SELECT查询时使用{$wpdb->base\\u prefix},但对于自定义菜单,wp\\uprefix是硬编码的。
在“管理/管理”面板中,违规行为#443。php
目前:
$menus = $wpdb->get_results( "SELECT term_taxonomy_id,a.term_id,name FROM wp_term_taxonomy as a,wp_terms as b WHERE a.taxonomy = \'nav_menu\' AND a.term_id = b.term_id" );
为了修复它,我将其更改为:
$menus = $wpdb->get_results( "SELECT term_taxonomy_id,a.term_id,name FROM {$wpdb->base_prefix}term_taxonomy as a,{$wpdb->base_prefix}terms as b WHERE a.taxonomy = \'nav_menu\' AND a.term_id = b.term_id" );
砰的一声,成功了。我已经将此发布到wptouch的支持板上,有人回应说他们会将其传递给开发人员。
此问题似乎也会影响多站点wordpress安装。