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