【问题标题】:Wordpress global $wpdb; returns unwanted 'null' textWordPress 全局 $wpdb;返回不需要的“空”文本
【发布时间】:2014-07-26 16:12:40
【问题描述】:

我正在使用带有 JSON REST API 插件的 wordpress (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

我一直在做:

  1. 包括 wp-load.php (http://wordpress.org/support/topic/wpdb-returning-null)
  2. 包括所有(可能需要)文件 (Using WPDB in standalone script?)
  3. 设置全局 $wpdb = "foo" ($wpdb is null even after 'global $wpdb)

但没有成功。如何删除 JSON 结果末尾的空文本?

谢谢。

【问题讨论】:

    标签: php json wordpress


    【解决方案1】:

    我认为问题在于您的非 utf8 数据。

    1. 尝试将此代码放在您的 SELECT 查询之前。

      $wpdb->query('SET CHARACTER SET utf8');
      
    2. 如果您的问题仍未解决,请按照此答案中的步骤操作:https://stackoverflow.com/a/1972468/2718799

    【讨论】:

    • 对不起,这两种解决方案都不起作用。我遇到的错误不是json,而是$wpdb。如果我注释掉echo $echo_json;,它只会显示null 而没有回显的json。谢谢。
    • 我不确定,但如果您有 php 5.4+,请尝试JSON_UNESCAPED_UNICODE 而不是JSON_PRETTY_PRINT
    【解决方案2】:

    所以最后我做了一个很肮脏的方式;

    • 卸载 JSON REST API 插件
    • 制作新文件(例如:wordpress-root/api/get_user.php
    • 将控制器方法中的脚本移动到get_user.php
    • global $wpdb 替换为include('../wp-load.php');

    然后来自$wpdb 的奇怪的空文本消失了。

    对于那些遇到这个问题的人,我强烈不推荐我的答案,这只是快速的肮脏修复。

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 2018-04-13
      • 2014-09-06
      • 2023-03-15
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      相关资源
      最近更新 更多