我正在开发的一个WordPress主题有一个集成的自定义帖子类型,名为"albums“,它利用了一些自定义模板(archive-albums.php,content-albums.php等)。为了便于移植,我想把这个功能和模板文件一起转移到一个插件中。
我成功地从functions.php转移了CPT代码,但当我尝试将模板文件从主题文件夹移动到插件文件夹时,一切都崩溃了。我觉得注册模板应该很简单,这样WordPress就知道加载它们了。
我的WordPress自定义模板可以放在插件文件夹中还是只放在主题文件夹中?
发布于 2013-04-01 05:28:07
事情正在分崩离析,因为当你移动这些文件时,你违反了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;
}显然你会使用你自己的路径,我仓促地写了这篇文章,所以你可能想要重构一下。
发布于 2017-02-02 02:01:37
我也有同样的问题。我已经在使用add_filter ('template_include', ...)了,问题是我需要指定一个要返回的文件,在本例中就是index.php。这引发了一个问题,主题不能完全运行,就像通过主题文件夹安装一样,因为我需要的是让WP选择适当的文件来呈现,而不是从我的部分中选择任何条件逻辑。因此,如果是帖子,它将选择single.php,依此类推。这种方法带来的另一个问题是,在header.php中,调用get_header ();会忽略本地文件header.php,而是加载默认的主题安装文件。
https://stackoverflow.com/questions/15734551
复制相似问题