如何使用 Relevanssi 为 WordPress 搜索页面输出 JSON?
How to output JSON for WordPress search page using Relevanssi?
我正在使用 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();
?>
但是,我收到一条错误消息,提示 headers 已发送。
Warning: Cannot modify header information - headers already sent by
(output started at
/Applications/MAMP/htdocs/NBC/wp-content/plugins/relevanssi/lib/search.php:554)
in /Applications/MAMP/htdocs/NBC/wp-content/themes/NBC/search.php on
line 3
有更好的方法吗? JSON 我需要它的原因是我想用 JS 使用它。
我以前在旧网站上做过这个,所以问题可能出在我使用的最新版本上? 3.5.11
请注意,查询确实 return 结果,但我在页面上也遇到了这些错误,这导致我收到无效的 JSON 数据。
谢谢!
如果我在 wp-config.php
中关闭 WP_DEBUG
,问题就会消失
define('WP_DEBUG', false);
这一定与我不明白的 WordPress 内部结构有关。
Relevanssi 3.5.11 有一个小错误。它不会以任何方式影响插件的使用,但启用 WP_DEBUG 后,它会发出未定义变量的通知。这就是您看到 "headers already sent" 错误的原因。
如果你想保持 WP_DEBUG 启用,你需要修复那个错误。修复很简单:将此添加到第 382 行的 lib/search.php 以定义变量。
$non_post_post_type = NULL;
此修复将包含在版本 3.5.12 中。
我正在使用 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();
?>
但是,我收到一条错误消息,提示 headers 已发送。
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/NBC/wp-content/plugins/relevanssi/lib/search.php:554) in /Applications/MAMP/htdocs/NBC/wp-content/themes/NBC/search.php on line 3
有更好的方法吗? JSON 我需要它的原因是我想用 JS 使用它。
我以前在旧网站上做过这个,所以问题可能出在我使用的最新版本上? 3.5.11
请注意,查询确实 return 结果,但我在页面上也遇到了这些错误,这导致我收到无效的 JSON 数据。
谢谢!
如果我在 wp-config.php
WP_DEBUG
,问题就会消失
define('WP_DEBUG', false);
这一定与我不明白的 WordPress 内部结构有关。
Relevanssi 3.5.11 有一个小错误。它不会以任何方式影响插件的使用,但启用 WP_DEBUG 后,它会发出未定义变量的通知。这就是您看到 "headers already sent" 错误的原因。
如果你想保持 WP_DEBUG 启用,你需要修复那个错误。修复很简单:将此添加到第 382 行的 lib/search.php 以定义变量。
$non_post_post_type = NULL;
此修复将包含在版本 3.5.12 中。