移动站点后模板文件丢失

时间:2011-07-07 作者:Travis Northcutt

我刚刚移动了一个站点(通过导出和导入所有帖子和页面,并复制主题文件),在新站点上,各种页面和帖子模板无法在帖子和页面编辑屏幕上进行选择。

这些文件确实有Windows行结尾,这是我修复的,但这并没有消除问题。还有什么可以尝试的吗?

4 个回复
最合适的回答,由SO网友:Chris_O 整理而成

听起来可能是数据库和插件选项序列化的问题。我以前在使用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

SO网友:chrishajer

您提到了Windows线条端点。您是否从Windows主机移动到Linux主机?既然Windows和Linux都不关心大小写,那个么现在文件名的大小写会把你们搞糊涂吗?就像模板名称在设置(和数据库)中是大写的一样,但文件是小写的,并且对于Linux来说它们不是同一个文件,所以找不到它们?

SO网友:Lucas

我想试试这个。。。删除它,然后重新加载。

SO网友:markratledge

令人费解的事检查模板文件的权限,并确保wp content为755。在Linux设备上,文件应为Unicode无BOM。去掉模板文件头上方的任何空白。并查看页面模板是否在2010年出现,以排除管理员。

结束

相关推荐

Enable page templates. How?

基本问题,但我想启用页面模板。我有一个启用了页面模板的主题。我切换到了另一个模板,但没有更改模板的选项,即使在创建新页面时也是如此。如何打开此选项?我在抄本和论坛上找到了根,但找不到。