在内容之前插入Wordpress简码

时间:2018-10-02 20:27:19

标签: wordpress shortcode

我知道我们必须返回简码,但是我正在尝试使用自定义模板,并且在所见即所得的编辑器中将简码插入内容的末尾时,该短代码实际上已插入内容的末尾:

这是我的简码:

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>

还有什么办法可以使短代码不在内容之前插入?

1 个答案:

答案 0 :(得分:1)

尝试一下:

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将运行您的功能,并用输出替换您的shortcode标记。如果函数的输出显示在页面上的其他位置(特别是显示在应该显示的区域上方),那么您的函数必须在Wordpress运行时输出内容 (在您的情况下,它一定不能按预期进行输出缓冲)。

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