报头已经在REST API调用中发送了get_template_part错误



我已经看过关于这个警告的多个其他问题(报头已经发送…等)和这个彻底的解释,但我没有找到我正在处理的情况的解决方案:

  1. 我有一个自定义的Wordpress REST API端点,返回get_template_part的输出. 当我在页面上调用get_template_part时,没有警告。只有在register_rest_route的回调中运行时才会出现
  2. 我也从使用这个库的外部API获取数据。当我开始提出这些请求时,错误就开始了。我试着在模板部分内外都提出请求,后者要么在register_rest_route的回调中,要么作为init的动作。
  3. 触发错误的行是img标记,其中我使用来自外部API响应的数据echo-ing URL作为src。在这个模板上还有其他echo调用,所以我怀疑这是问题所在。
  4. 有问题的行实际上工作得很好,并完成了它的工作。我只需要去掉这个该死的警告。

代码:

显然也内:

<?php
//the api endpoint declaration
add_action( 'rest_api_init', function () {
register_rest_route(
'theme/v2',   // namespace
'/homepage',  // route
array(                  // options
'methods'  => 'GET',
'callback' => 'build_home',
)
);
});
//the callback for the wordpress api
function build_home() {
// this is the external API request, using their PHP library. 
// I linked the library above. The request returns an object with a bunch of data
include_once(get_template_directory()."/arena/arena.php");
$arena = new Arena();
$page = $arena->set_page(); 
$per = 8; 
$slug = 'concepts-bo-6ajlvpqg'; 
$channel = $arena->get_channel($slug, array('page' => $page, 'per' => $per));
//I'm passing the response from the external API (in $channel) to get_template part
//get_template_part is then the output for the wordpress API request
get_template_part('custom-home-template',null,array('channel'=>$channel));
}
?>

模板内部部分:

<?php
$channel=$args["channel"];
?>
<div id="concepts-box" class="bodycontent reg-width">
<?php foreach ($channel->contents as $item) { if($item->class=="Image"){
$img=$item->image["square"]["url"];
?>
<div class="concept-wrapper">
<!-- the line below is the one that triggers the error -->
<img lozad src="<?=$img; ?>">
</div>
<?php }} ?>
</div>

充分警告:

<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /filepath/wp-content/themes/theme/custom-home-template.php:63) in <b>/filepath/wp-includes/rest-api/class-wp-rest-server.php</b> on line <b>1372</b><br />

回答在Wordpress SO -链接这里。问题是我将get_template_part视为API响应,而不是通过输出缓冲将其输入变量

相关内容

  • 没有找到相关文章

最新更新