我正在开发一个需要在不同 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();
}
我真的很感激有人可以提供的任何见解。