2

I am working on a project that requires some integration between different WordPress instances and I am in the process of creating a WordPress plugin that will provide that functionality through the REST API.

I have enabled the WP-API plugin and the Basic Authentication plugin and am able to make requests that do not require authentication but when I make a request that does require authentication, such as adding a new page, I am met with 401 - Sorry, you are not allowed to create new posts.

I realize basic authentication is not suitable for production needs but would like to get it working properly for development and have been spinning my wheels on this seemingly small problem. I am perfectly able to make these requests using Postman, so there is something wrong with my implementation. Here is the code in question:

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();
}

I would be really appreciative of any insights somebody out there could provide.

KittMedia
  • 7,368
  • 13
  • 34
  • 38
murtrex
  • 31
  • 6

0 Answers0