我使用自定义字段创建自定义帖子类型的编码插件。现在我需要构建自定义存档/类别/标签模板,其中应包含自定义字段。
问题是我无法从插件中将模板部分插入到归档循环中。
是否有一些钩子在激活的主题中插入自定义循环?像这样:
add_filter('the_content', 'change_content_in_single_post');
现在我正在使用这个钩子:
add_filter( 'template_include', 'change_whole_cpt_archive_template' );
...但是当我使用template_include
挂钩时,它会更改整个模板,我需要执行类似the_content
过滤器的操作。该钩子获取当前主题的模板并用我的自定义模板替换标准内容模板 - 使其成为激活主题的一部分。它使我的CPT单页模板与任何wp主题兼容。现在我需要用自定义循环替换标准存档循环。例如:在存档页面上显示没有图像的帖子......它必须是用插件中的自定义模板替换标准get_template_part()
函数的结果的东西。这就是我要搜索的内容......
无论如何,也许您知道一些更好的方法来使插件(存档模板)与wp主题兼容吗?
非常感谢您的帮助!
答案 0 :(得分:1)
您需要引入一些逻辑才能在您的cpt存档页面上运行。
add_filter( 'template_include', 'change_all_archive_template' );
function change_all_archive_template($template){
if ( is_post_type_archive('cptname') ) {
$template= 'find the template!';
//if( file_exists ) --> look in theme 1st??
//else --> load from plugin..
}
return $template;
}
有很多插件使用此技术查看活动主题1st,如果找不到,请在插件中找到该文件。
答案 1 :(得分:0)
我在woocommerce插件文件中找到了解决方案。
所以...从插件构建自定义归档模板的最佳方法是使用template_include
钩子并在自定义模板文件集的页眉和页脚中激活主题:
<?php get_header();
// custom archive loop
get_footer(); ?>
为了使它与任何wp主题更兼容,请使用stanard wordpress和bootstrap类。