2

私は、異なる WordPress インスタンス間の統合を必要とするプロジェクトに取り組んでおり、REST API を介してその機能を提供する WordPress プラグインを作成中です。

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