1

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

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

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

4

2 回答 2

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;
}

显然你会使用你自己的路径,我写的很仓促,所以你可能想要重构。

于 2013-03-31T21:28:07.420 回答
0

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

于 2017-02-01T18:01:37.320 回答