在不修改单个模板的情况下显示自定义帖子的内容

时间:2017-07-04 作者:John Doe

很难解释这一点,但我会尽全力。

假设我们有主题T 和插件P.

T 有一系列自定义分类法P, 插件。

我试图实现的是在中显示来自自定义分类法的内容PT 模板/单个文件,无需修改中的任何文件T. 基本上,我想通过在中编写代码来“劫持”主题中的单个视图P. 这是可以实现的吗?如果是,怎么做?

我找不到比“劫机”更好的词了。它只是根据插件中自定义分类法中保存的内容,在单个视图中添加不同的部分。

提前感谢您!

2 个回复
SO网友:Nathan Johnson

是的,这是可能的。您需要使用template_include 滤器

要为自定义帖子类型“my\\u custom\\u post\\u type”返回不同的模板,可以执行以下操作:

add_filter( \'template_include\', \'wpse_272261_template_include\', 100 );
function wpse_272261_template_include( $template ) {
  if ( is_singular( [ \'my_custom_post_type\' ] ) ) return PATH_TO . \'template.php\';
  return $template;
}

SO网友:Jacob Peattie

您可以使用the_content 筛选器将您自己的代码添加到the_content() 作用

其工作原理如下:

function my_add_to_content( $current_content ) {
    ob_start();

    /*
    Add code here to output what you need to append to the content.
    Since this is between ob_start() and ob_get_clean() you can treat it like a
    template and echo the content/markup you need.
    */

    $additional_content = ob_get_clean();

    $new_content = $current_content . $additional_content;

    return $new_content;
}
add_filter( \'the_content\', \'my_add_to_content\', 99 );
如果不确切知道您需要什么,很难说得更具体一些,但我把注释放在哪里,您需要做一些事情,比如检查这是否是您想要“劫持”的帖子类型/模板(使用get\\u post\\u type()或is\\u page\\u template()来处理这类事情),并检查您想要输出的内容是否存在值。

结束

相关推荐