Wordpress API返回空元数组

时间:2017-05-09 20:12:20

标签: wordpress woocommerce wordpress-rest-api

如果您在wordpress博客上点击/wp-json/wp/v2/comments?post=X,则会返回该帖子ID的评论JSON。我能够在没有问题的情况下获得结果,但meta是一个空数组,而不是具有与注释相关的任何元值。

我也尝试访问/wp-json/wp/v2/comments/X来提取个人评论,但这也会返回一个空的meta数组。

wp_commentmeta表格中保存了rating字段,我希望能够将其返回,以便我可以在第三方网站上显示来自woocommerce的评论。

1 个答案:

答案 0 :(得分:0)

我发现WooCommerce本身有自己的API,它确实返回了评级的元值,但他们想要一个API密钥来获取评论。我查看了他们用于构建响应的方法,他们只是在get_comments()结果中循环,然后通过执行rating

创建一个附加了get_comment_meta($commentid, '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;
}