Wordpress当然是由模板和组成这些模板的模板部分组成的。我知道我可以覆盖模板部分-这不是我在这里要做的。我正在尝试将所述模板部分生成的HTML显示在其他地方。
如何从给定页面/帖子ID的模板部分获取呈现的HTML数据,并将其显示为另一个页面的一部分,最好是显示为短代码?这里有一个例子。
假设ID=20的帖子有我想在单独页面上显示的评论。我想写一个短代码来实现这一点:
--找到ID=20的帖子的评论数据
--将该ID应用于模板零件//模板/注释。php并将呈现的HTML存储在短代码中
--在我的页面上的任意位置使用我的自定义快捷码来显示它。最后,我将用类似的[注释id=“20”]显示注释
我知道我在这里用的是“评论”,但这只是一个例子。这将在其他地方有应用程序,尤其是WooCommerce,例如,我想显示给定产品的特定产品属性。
SO网友:Alex Standiford
当我尝试这样做时,我会使用ob_start()
和ob_get_clean()
将生成的模板部分转换为可以为短代码返回的字符串。
一个常见的短代码陷阱是,如果你回显输出,它将在错误的时间输出内容。
接下来,您将要使用include locate_template(\'template-name.php\')
因此,在适当的范围内传递变量。
如果试图直接加载模板部件,可以执行以下操作(此代码未经测试):
// [get_comment id=0]
function get_comment_shortcode($atts){
$a = shortcode_atts([
\'id\' => 0,
], $atts);
if(!get_comment($a[\'id\'])) return false; //Bail early if the comment doesn\'t exist
$id = $a[\'id\']; //reference this ID in your template to get the comment ID
ob_start();
include locate_template(\'comment-template.php\');
$result = ob_get_clean();
return $result;
}
add_shortcode(\'get_comment\', \'get_comment_shortcode\');
参考文献:
https://codex.wordpress.org/Function_Reference/locate_templatehttps://codex.wordpress.org/Shortcode_API