WP Rest API не позволяет публиковать анонимные комментарии через запрос Laravel - PullRequest
0 голосов
/ 25 февраля 2020

Я использую WP REST API для получения сообщений в Laravel проекте. Запрещено публиковать анонимные комментарии к конкретному сообщению c. Я также обновил свои функции. php

Вот ошибка:

{"code":"rest_cannot_read_post","message":"Sorry, you are not allowed to read the post for this comment.","data":{"sta (truncated...)

Класс API:

public static function postComments($postId, $author_name, $author_email, $content){

    $url = config::get('app.WP_BASE_URL') . '/wp-json/wp/v2/comments?author_name='. $author_name.'&author_email='. $author_email.'&content='. $content.'&post='. $postId;

    $params = [
        'post' => $postId,
        'author_email' => $author_email,
        'author_name' => $author_name,
        'content' => $content
    ];

    $data = Wpapi::curlPostRequest($url, $params);

    return $data;

} 

Контроллер:

public function postComment(Request $request){

  $id = $request->input('id');

  $data = $request->validate([
  'name' => 'required|max:255',
  'email' => 'required',
  'comment' => 'required',
  ]);
$author_email = $data['email'];
$author_name = $data['name'];
$content = $data['comment'];

      $postComment = Wpapi::postComments($id, $author_name, $author_email, $content );

    if($postComment){
      echo "Success";
    }
    else {
      echo "Failure";
    }

}

1 Ответ

1 голос
/ 25 февраля 2020

Решение 1: Как и запрос GET, вы также можете использовать запрос POST для публикации данных. Что вам нужно сделать, это передать заголовки авторизации с помощью вызова API POST.
Подробнее о механизме авторизации вы можете узнать здесь: https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/

Заголовки:

Authorization:Bearer <token>
Content-Type:application/json

Заголовки, которые вам понадобятся перейти в массив Params.

Решение 2: Если вы хотите оставить комментарий как Анонимный пользователь, выполните следующие действия: Откройте функции вашей темы WordPress. php и добавьте следующий фрагмент:

add_filter( 'rest_allow_anonymous_comments', '__return_true' ); 

А затем попробуйте запустить фрагмент кода, который вы уже написали. Я бы предложил использовать Решение 1.

...