有没有办法从插件向任何主题插入自定义归档循环?

时间:2016-02-27 20:25:09

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

我使用自定义字段创建自定义帖子类型的编码插件。现在我需要构建自定义存档/类别/标签模板,其中应包含自定义字段。

问题是我无法从插件中将模板部分插入到归档循环中。

是否有一些钩子在激活的主题中插入自定义循环?像这样:

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主题兼容吗?

非常感谢您的帮助!

2 个答案:

答案 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类。