我的WordPress自定义模板可以在插件文件夹中还是仅在主题文件夹中?

时间:2013-03-31 21:08:53

标签: wordpress-plugin wordpress custom-post-type

我正在开发的WordPress主题有一个名为“albums”的集成自定义帖子类型,它使用了一些自定义模板(archive-albums.php,content-albums.php等)。我想要做的是将此功能与模板文件一起转移到插件中以便于移植。

我成功地从functions.php传输了CPT代码,但是当我尝试将模板文件从主题文件夹移动到插件文件夹时,事情就崩溃了。我觉得以某种方式注册模板应该很简单,以便WordPress知道加载它们。

我的WordPress自定义模板可以在插件文件夹中还是仅在主题文件夹中?

2 个答案:

答案 0 :(得分:1)

事情正在崩溃,因为当你移动这些文件时,你违反了WP的原生模板层次结构。您需要显式声明这些文件的位置。使用存档作为示例,您可以将这样的内容添加到functions.php中(告诉WP查看其他地方):

add_filter('template_include', 'include_album_template', 1);
function include_album_template($template_path) {
if(get_post_type() == 'albums') {
    if(!is_single()) {
        $theme_file = 'path-to-your-plugin-directory';
        $template_path = $theme_file; 
    }
}
return $template_path;
}

显然你会使用自己的路径,我匆忙写了这个,所以你可能想要重构。

答案 1 :(得分:0)

我有同样的问题。我已经在使用add_filter ('template_include', ...)问题,我需要指定要返回的文件,在这种情况下是index.php。这引发了一个问题,即主题没有像通过themes文件夹那样完全运行,因为我需要的是让WP选择适当的文件进行渲染而不需要任何条件逻辑。因此,如果它是一个帖子,它将选择single.php,依此类推。使用此方法引发的另一个问题是,在header.php中,调用get_header ();忽略本地文件header.php并改为加载默认主题安装文件。

相关问题