听起来可能是数据库和插件选项序列化的问题。我以前在使用xml导出移动站点时遇到过插件设置等问题。category templates插件将大量选项写入db,这些选项可能已损坏。
作为测试,请尝试创建一个php文件并将其放在主题根目录中。添加基本模板标题:
<?php
/*
* Template Name: Template Test
*/
?>
看看是否可以选择。
如果您仍然可以访问旧站点/服务器,请尝试对数据库进行mysql转储,然后创建一个新的空白数据库并导入转储文件。
另外,您没有提到新老位置的服务器/托管环境。这些信息可能有助于调试问题。
还想提到的是,类别模板插件有问题,可能是也可能不是问题的原因。
该插件在其update\\u option()和get\\u option()调用中使用serialize和unserialize。WordPress已经对这些函数进行了序列化,请参见:http://andrewnacin.com/2010/04/18/wordpress-serializing-data/
如果您查看插件的前几行:
function cat_temp_menus() {
add_submenu_page(\'themes.php\',\'Category Templates\', \'Category Templates\', 8, basename(__FILE__), \'cat_temp_options_page\');
if (function_exists(\'add_meta_box\')) {
add_meta_box(\'cat_template_select\',\'Post Template\',\'cat_temp_meta\',\'post\',\'side\',\'low\');
}
}
add\\u submenu\\u page功能正在使用2.0版中不推荐使用的用户角色(8)。
语法应为:<?php add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function ) ?>
它还使用basename(__FILE__)
作为管理菜单页面的slug,这是一个次要的安全问题。
$menu\\U slug注释请不要使用FILE 它造成了一个丑陋的URL,并且是一个较小的安全细微差别。(See Codex)
代码中的该行应为:
function cat_temp_menus() {
add_submenu_page(\'themes.php\',\'Category Templates\', \'Category Templates\', \'activate_plugins\', \'themes.php?page=cat_temp_options_page\', \'cat_temp_options_page\');
if (function_exists(\'add_meta_box\')) {
add_meta_box(\'cat_template_select\',\'Post Template\',\'cat_temp_meta\',\'post\',\'side\',\'low\');
}
}
所以我的答案是,问题很可能是插件,我的建议是要么重写它,要么找到另一个插件
更新:
我决定重写插件,修复所有问题,因为作者不再真正支持它了。目前,它位于GitHub上:
https://github.com/c3mdigital/Category-Templates