返回空元数组的Wordpress API

返回空元数组的Wordpress API,wordpress,woocommerce,wordpress-rest-api,Wordpress,Woocommerce,Wordpress Rest Api,如果你在wordpress博客上点击/wp json/wp/v2/comments?post=X,它会返回该帖子ID的json评论。我可以毫无问题地获得结果,但是元是一个空数组,而不是与评论相关的任何元值 我还尝试访问/wp-json/wp/v2/comments/X以提取单个注释,但这也会返回一个空的元数组 wp_commentmeta表中保存了一个评级字段,我希望它能被返回,这样我就可以在第三方网站上显示来自woocommerce的评论。我发现woocommerce本身有自己的API,它确实

如果你在wordpress博客上点击
/wp json/wp/v2/comments?post=X
,它会返回该帖子ID的json评论。我可以毫无问题地获得结果,但是
是一个空数组,而不是与评论相关的任何元值

我还尝试访问
/wp-json/wp/v2/comments/X
以提取单个注释,但这也会返回一个空的
数组


wp_commentmeta表中保存了一个
评级
字段,我希望它能被返回,这样我就可以在第三方网站上显示来自woocommerce的评论。

我发现woocommerce本身有自己的API,它确实返回评级的元值,但他们需要一个API键来获取评论。我查看了他们用来构建响应的方法,他们只是在
get_comments()
results中循环,然后通过执行
get_comments\u meta($commentid,'rating')
创建一个带有
rating
附加的新数组

我不能依赖API密钥来满足我的需要,因为这意味着我可以公开使用,所以我添加了一个API端点
/wp json/wc/v2/reviews
,现在它可以满足我的需要

add_action('rest_api_init', 'comments_api_endpoint');   
function comments_api_endpoint()
{           
    register_rest_route( 'wc/v2', '/reviews/', array(
        'methods' => ['GET'],
        'callback' => 'comments_api',
    ));
}
function comments_api()
{
    $data = [];
    $reviews = get_approved_comments($_GET['id']);
    foreach($reviews as $review) {
        $data[] = [
            'author'  => $review->comment_author,
            'rating'  => get_comment_meta($review->comment_ID, 'rating', true),
            'content' => $review->comment_content
        ];
    }
    return $data;
}   

我发现WooCommerce本身有自己的API,它确实返回评级的元值,但是他们需要一个API键来获取评论。我查看了他们用来构建响应的方法,他们只是在
get_comments()
results中循环,然后通过执行
get_comments\u meta($commentid,'rating')
创建一个带有
rating
附加的新数组

我不能依赖API密钥来满足我的需要,因为这意味着我可以公开使用,所以我添加了一个API端点
/wp json/wc/v2/reviews
,现在它可以满足我的需要

add_action('rest_api_init', 'comments_api_endpoint');   
function comments_api_endpoint()
{           
    register_rest_route( 'wc/v2', '/reviews/', array(
        'methods' => ['GET'],
        'callback' => 'comments_api',
    ));
}
function comments_api()
{
    $data = [];
    $reviews = get_approved_comments($_GET['id']);
    foreach($reviews as $review) {
        $data[] = [
            'author'  => $review->comment_author,
            'rating'  => get_comment_meta($review->comment_ID, 'rating', true),
            'content' => $review->comment_content
        ];
    }
    return $data;
}