如何构建自定义插件以与当前主题集成

时间:2019-10-23 08:18:07

标签: wordpress

我正在开发具有CPT和CPT模板的插件。我希望模板能够集成到与其一起使用的任何主题中。我曾想过从模板中调用'the_content'挂钩,但是我不知道该怎么做,因为我所能找到的只是从functions.php文件中调用它。请您告诉我如何在CPT模板文件(例如single-CPT.php)中进行编码,或者我的方向错误,所以请重定向我。谢谢!

1 个答案:

答案 0 :(得分:0)

编辑:

如果只想向the_content函数添加内容,则可以执行以下操作:

add_filter('the_content', "test_the_content");
function test_the_content($content){
    if(is_singular('test')){
        $content = $content.test_additional_content();
    }
    return $content;
}
function test_additional_content(){
    ob_start(); ?>
    <div class="test">
        Here what you want to display after the_content
    </div>
    <?php
    return ob_get_clean();

}

原始答案

如果我正确理解了您的问题,这是如何在插件中定义自定义帖子类型的模板。这样,也可以从主题覆盖插件模板。

下面的示例适用于名为“测试”的CPT,因此您必须根据CPT的名称来修改代码。

add_filter('template_include', 'my_plugin_templates');
function my_plugin_templates($template) {
  $post_types = array('test');

  if (is_post_type_archive($post_types) && !file_exists(get_stylesheet_directory() . '/archive-test.php')) {
    $template = plugin_dir_path( __FILE__ ) . 'archive-test.php';
  }

  if (is_singular($post_types) && !file_exists(get_stylesheet_directory() . '/single-test.php')) {
    $template = plugin_dir_path(__FILE__) . 'single-test.php';
  }
  return $template;
}

您还可以查看此仓库:https://github.com/zecka/cpt-in-plugin