首页 > 解决方案 > 无法访问评论元?

问题描述

设置

使用 WP Job Manager 的评论扩展,我对元字段进行评论,review_average平均为 `review_stars。我正在自定义 WP REST API,因此我可以通过我正在构建的移动应用程序远程读取和写入评论。

我已经暴露了这些领域

 register_meta( 'comment', 'review_average', array( 'show_in_rest' => true, 
                                                'type' => 'string',
                                                'description' => 'review_average',
                                                'single'=> false));
 register_meta( 'comment', 'review_stars', array( 'show_in_rest' => true, 
                                                'type' => 'string',
                                                'description' => 'review_stars',
                                                'single'=> false));

这会在 REST API 响应中生成此字段以供评论:

meta: {
  review_average: [
    "4"
  ],
  review_stars: [
    "Array"
  ]
},

(我似乎无法分解该数组,但只有一个星星类别,所以平均值很好)

我编写了一个用于写入的函数create_review,它成功地为评论提供了正确的星号。这两个元值都是它工作所必需的。add_comment_metareview_averagereview_stars

function create_review($param) {
  $id = wp_insert_comment(array('comment_post_ID'       => $param['post_id'],
                                'comment_author'        => $param['username'],
                                'comment_author_email'  => $param['email'],
                                'user_id'               => $param['user_id'],
                                'comment_content'       => $param['content']));

  if ($id) add_comment_meta($id, 'review_average', $param['rating']); 
  if ($id) add_comment_meta($id, 'review_stars', array('Your Rating'=>$param['rating'])); 

  return get_comment($id);
}

问题

我似乎无法将评级元信息纳入评论回复。在编写“索引”函数的过程get_comments中,我编写了“显示”函数get_commment

function get_review($param) {
  $id = $param['id'];
  $info = get_comment($id);
  $res = array( 
    'id' => $id,
    'author_name' => $info->comment_author,
    'author_email' => $info->comment_author_email,
    'author_id' => $info->user_id,
    'date' => $info->comment_date,
    'rating' => $info->review_average
  );
  return $res;
}

回应有rating: null。与 相同的结果'rating' => $info->meta->review_average,以及_review_average在这两种情况下使用。

我的自定义还有另一个功能postsjob_listings即我的应用程序中的功能customersjob_listing有一个元字段显示在 as 下的默认 REST API 响应meta_job_location,但在我的get_customer函数中,$res['address'] = $info->_job_location;工作得很好!

我如何获得该死的rating_average元!?

标签: phpwordpress

解决方案


好吧,'rating' => get_comment_meta($id)在我的get_review方法里面给了我这个:

"rating": {
        "review_average": [
            "4"
        ],
        "review_stars": [
            "a:1:{s:11:\"Your Rating\";s:1:\"4\";}"
        ]
    }

接着

'rating' => get_comment_meta($id)['review_average'][0],
'rating_info' => get_comment_meta($id),

给我一个很好的完整

"rating": "4",
    "rating_info": {
        "review_average": [
            "4"
        ],
        "review_stars": [
            "a:1:{s:11:\"Your Rating\";s:1:\"4\";}"
        ]
    }

我正在学习php,所以如果有人可以发表评论为什么我会很高兴

get_comment_meta($id)->review_average

返回 null 但

get_comment_meta($id)['review_average']

作品。


推荐阅读