无法访问评论元?

时间:2019-08-08 22:04:29

标签: php wordpress

设置

使用WP Job Manager的Reviews扩展名,我的meta字段为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_meta写入review_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的结果相同。

我为自定义posts提供了另一个功能,其中job_listings是我的应用程序中的customersjob_listing的元字段显示在默认REST中meta下的API响应为_job_location,但是在我的get_customer函数中,$res['address'] = $info->_job_location;可以正常工作!

如何获取该死的rating_average元!!

1 个答案:

答案 0 :(得分:0)

好吧,我的'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']

有效。