如何在插件中使用快捷码呈现模板文件

时间:2015-09-20 作者:Bazinga777

我创建了一个插件,它有一个自定义的帖子类型和一个呈现帖子的模板文件。我希望能够在任何页面中使用短代码呈现模板。因此,我创建的是这段代码,我确信这段代码是错误的,如果有人能回答我应该如何呈现模板,我将不胜感激

function display_timeline(){

    ob_start();  
    locate_template(plugin_dir_path( __FILE__ ) . \'/timelines.php\', true, false);  
    $ret = ob_get_contents();  
    ob_end_clean();  

    return $ret;    

}

add_shortcode( \'wptimeline_display\', \'display_timeline\' );
此外,模板和插件函数都位于同一目录中。

2 个回复
SO网友:Pieter Goosen

locate_template() 只在主题中寻找特定的模板,而不是在插件中,这样你的功能就永远不会工作。这也适用于get_template_part() 它本质上只是locate_template().

您需要使用以下功能file_exists() 检查所需模板是否存在,然后使用include() 加载模板。您可以使用上述方法编写自己的函数,如locate_template(), 这至少是我将要做的,如果插件中不存在模板,我可以回退到主题中使用模板。

请注意,在使用某个值/模板/条件之前,始终首先检查该值/模板/条件是否存在。这将避免发生故障时出现不必要的错误和问题。此外,如果出现故障,还应准备一些东西,如返回false、添加重定向、退出等,以安全地处理代码

SO网友:Prasad Nevase

请尝试使用get_template_part(\'timelines\'); 而不是locate_template(plugin_dir_path( __FILE__ ) . \'/timelines.php\', true, false); 我只是试了一下,效果很好。如果这能解决您的问题,请告诉我。