如何使用Relevanssi为WordPress搜索页面输出JSON?



我正在使用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.phpon 第 3 行

有没有更好的方法可以做到这一点?我需要它作为 JSON 的原因是我想用 JS 使用它。

我以前在较旧的网站上做过此操作,所以也许问题出在我使用的最新版本上?3.5.11

请注意,查询确实返回结果,但我在页面上也收到这些错误,这导致我收到无效的 JSON 数据。

谢谢!

Relevanssi 3.5.11 有一个小错误。它不会以任何方式影响插件的使用,但在启用WP_DEBUG的情况下,它会为未定义的变量抛出通知。这就是为什么您看到"标头已发送"错误的原因。

如果要使WP_DEBUG保持启用状态,则需要修复该错误。修复很简单:将其添加到 lib/search.php第 382 行以定义变量。

$non_post_post_type = NULL;

此修复程序将包含在版本 3.5.12 中。

如果我在wp-config.php中关闭WP_DEBUG,问题就会消失

define('WP_DEBUG', false);

这一定与我不了解的WordPress内部有关。

最新更新