我正在使用WordPress搜索插件Relevanssi。
我正在尝试自定义search.php
模板以输出JSON,如下所示:
<?php
header('Content-Type: application/json');
$results = array();
if (have_posts()):
while (have_posts()):
the_post();
$results[] = array(
'permalink' => get_permalink(),
'title' => get_the_title()
);
endwhile;
endif;
echo json_encode($results);
die();
?>
但是,我收到一个错误,标题已经发送。
警告:无法修改标头信息 - 已发送的标头 (输出始于 /Applications/MAMP/htdocs/NBC/wp-content/plugins/relevanssi/lib/search.php:554) 在 /Applications/MAMP/htdocs/NBC/wp-content/themes/NBC/search.php 上 第3行
有更好的方法吗?我需要它作为JSON的原因是我想用JS消费它。
我之前在旧网站上做过这个,所以问题可能与我使用的最新版本有关吗? 3.5.11
请注意,查询会返回结果,但我也会在页面上收到这些错误,这会导致我收回无效的JSON数据。
谢谢!
答案 0 :(得分:1)
Relevanssi 3.5.11有一个小bug。它不会以任何方式影响插件的使用,但是如果启用了WP_DEBUG,它会抛出一个未定义变量的通知。这就是为什么你会看到已经发送过#34;标题的原因&#34;错误。
如果要保持启用WP_DEBUG,则需要修复该错误。修复很简单:在第382行将其添加到lib / search.php以定义变量。
$non_post_post_type = NULL;
此修复程序将包含在3.5.12版本中。
答案 1 :(得分:0)
如果我在WP_DEBUG
wp-config.php
,问题就会消失
define('WP_DEBUG', false);
它必须与我不理解的WordPress内部有关。