0

我正在使用 WordPress 搜索插件Relevansi

我正在尝试自定义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/ 中的 /Applications/MAMP/htdocs/NBC/wp-content/plugins/relevansi/lib/search.php:554 发送(输出开始于/Applications/MAMP/htdocs/NBC/ wp-content/themes/NBC/search.php在第 3 行

有一个更好的方法吗?我需要它作为 JSON 的原因是我想用 JS 来使用它。

我以前在旧网站上做过这个,所以问题可能出在我正在使用的最新版本上?3.5.11

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

谢谢!

4

2 回答 2

1

Relevanssi 3.5.11 有一个小错误。它不会以任何方式影响插件的使用,但启用 WP_DEBUG 后,它会针对未定义的变量发出通知。这就是您看到“标头已发送”错误的原因。

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

$non_post_post_type = NULL;

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

于 2017-07-07T03:36:51.457 回答
0

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

define('WP_DEBUG', false);

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

于 2017-07-06T09:30:57.833 回答