Я работаю над проектом, который требует некоторой интеграции между различными экземплярами WordPress, и я нахожусь в процессе создания плагина WordPress, который обеспечит эту функциональность через API REST.
Я включил плагин WP-API и плагин Basic Authentication и могу делать запросы, которые не требуют аутентификации, но когда я делаю запрос, который требует аутентификации, такой как добавление новой страницы, меня встречают 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();
}
Я был бы очень признателен за любые идеи, которые кто-то там может предоставить.
Задача ещё не решена.
Других решений пока нет …