我使用wordpress与JSON REST API插件(http://wordpress.org/plugins/json-rest-api/)。
我可以创建我的自定义端点。在本例中,我创建了显示5个用户的端点。
这是我的代码:
class JSON_API_Pmbs_Controller
{
public function user_search()
{
global $wpdb;
$query = "SELECT * FROM pmbsn_users LIMIT 0,3";
$blogusers = $wpdb->get_results($query);
$return_array = array();
foreach ($blogusers as $user)
{
$avatar_url = get_avatar_url ( get_the_author_meta($user->ID), $size = '50' );
$current_array = array(
'thumbnail' => $avatar_url,
'display_name' => $user->display_name,
'user_url' => site_url().'/members/'.$user->user_login
);
array_push($return_array, $current_array);
}
$echo_json = json_encode($return_array, JSON_PRETTY_PRINT);
echo $echo_json;
}
}
JSON结果:
[
{
"thumbnail": "http:'/'/0.gravatar.com'/avatar'/?d=identicon&s=50",
"display_name": "PMBS Admin",
"user_url": "http:'/'/localhost'/web_pmbsnetwork'/members'/pmbsadmin"
},
{
"thumbnail": "http:'/'/0.gravatar.com'/avatar'/?d=identicon&s=50",
"display_name": "Johan HS",
"user_url": "http:'/'/localhost'/web_pmbsnetwork'/members'/johan"
},
{
"thumbnail": "http:'/'/0.gravatar.com'/avatar'/?d=identicon&s=50",
"display_name": "Seno Adi W",
"user_url": "http:'/'/localhost'/web_pmbsnetwork'/members'/seno"
}
]null
你们可能会注意到在json结果的末尾有一个奇怪的'null'文本。
经过调试,我发现这是来自global $wpdb
。
我一直在做:
- 包含wp-load.php (http://wordpress.org/support/topic/wpdb-returning-null)
- 包括所有(可能需要)文件(使用WPDB在独立脚本?)
- 设置global $wpdb = "foo" ($wpdb即使在'global $wpdb之后也是空的)
但是没有成功。我如何在JSON结果的末尾删除空文本?
谢谢。
我认为问题是你的非utf8数据。
-
尝试将此代码放在SELECT查询之前。
$wpdb->query('SET CHARACTER SET utf8');
-
如果您的问题没有解决,请按照以下答案中的步骤操作:https://stackoverflow.com/a/1972468/2718799
最后我做了一个很脏的方法;
- 卸载JSON REST API插件
- 创建新文件(例如:
wordpress-root/api/get_user.php
) - 将控制器方法中的脚本移动到
get_user.php
- 用
include('../wp-load.php');
代替global $wpdb
然后$wpdb
中奇怪的空文本就消失了。
对于那些经历过这个问题的人,我强烈不推荐我的答案,这只是一个快速的肮脏修复。