WordPress 简码正在内容之前插入



我知道我们必须返回短代码,但我正在尝试使用自定义模板,并且短代码入到所见即所得编辑器中的内容之前,而实际上它位于内容的末尾:

这是我的短代码:

add_shortcode('test_temp', 'temp_handler');
function temp_handler($atts) { 
ob_start();
load_template(TEMPLATES_PATH . templates/test.php');
return ob_get_contents();
}

以下是 Test.php 的样子:

<div class="testDiv">Here is my test template</div>

我还能做什么才能使短代码不插入内容之前?

试试这个:

add_shortcode('test_temp', 'temp_handler');
function temp_handler($atts) { 
ob_start();
load_template(TEMPLATES_PATH . templates/test.php');
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}

您使用输出缓冲加载模板文件的想法是一个好主意,也是 Wordpress 短代码的常见做法。但是,对我来说,您没有在提供的代码中的任何位置结束输出缓冲,这对我来说看起来很奇怪,ob_end_clean(),这让我相信您的输出缓冲设置不完美。

一般来说,Wordpress 会运行你的函数,用输出替换你的短代码标签。如果你的函数的输出出现在页面上的其他位置(特别是如果它显示在它应该在的区域上方(,那么你的函数必须在Wordpress 运行它时输出内容(在您的情况下,它一定不是输出缓冲如预期(。

注意:默认情况下,load_template函数使用require_once,这意味着您只能在页面上使用一次短代码。相反,我建议使用:load_template(TEMPLATES_PATH . templates/test.php',虚假);

最新更新