2

我正在开发一个需要在不同 WordPress 实例之间进行一些集成的项目,并且我正在创建一个 WordPress 插件,该插件将通过 REST API 提供该功能。

我启用了 WP-API 插件和基本身份验证插件,并且能够发出不需要身份验证的请求,但是当我发出需要身份验证的请求时,例如添加新页面,我遇到了401 - Sorry, you are not allowed to create new posts.

我意识到基本身份验证不适合生产需求,但希望让它在开发中正常工作,并且一直在这个看似小问题上旋转我的车轮。我完全能够使用 Postman 提出这些请求,所以我的实现有问题。这是有问题的代码:

function add_new_page($post) {

  // Credentials for basic authentication.
  $username = 'user';
  $password = 'password';

  // Request headers.
  $headers = array(
    'Authorization' => 'Basic ' . base64_encode( $username . ':' . $password ),
    'Content-Type' => 'application/json'
  );

  // Request URL.
  $url = "http://localhost/wp-json/wp/v2/pages";

  // Request body.
  $body = array(
    'slug' => $post->post_name,
    'status' => $post->post_status,
    'type' => $post->post_type,
    'title' => $post->post_title,
    'content' => $post->post_content,
    'excerpt' => $post->post_excerpt,
  );

  $body_json = json_encode($body);

  // Request arguments.
  $args = array(
    'method' => 'POST',
    'blocking'    => true,
    'headers'     => $headers,
    'cookies'     => array(),
    'body'        => $body_json,
  );

  // Fire request.
  $response = wp_remote_request($url, $args);

  // Handle response.
  if (is_wp_error($response)) {
    $error_message = $response->get_error_message();
    echo "Something went wrong: $error_message";
  } else {
    $response_body = json_decode(wp_remote_retrieve_body($response));
    // Display response body.
    echo '<pre>';
    print_r($response_body);
    echo '</pre>';
  }
  // Exit so we can read the response.
  exit();
}

我真的很感激有人可以提供的任何见解。

4

0 回答 0