it-swarm-vi.tech

Thêm phương tiện với WP-Rest-API v2

Tôi cần sự giúp đỡ của bạn để tải lên một hình ảnh phương tiện trong blog wordpress của tôi thông qua xác thực Wp-rest-api v2 và Oauth2.

Tôi không tìm thấy trong tài liệu API REST cách gửi dữ liệu hình ảnh của tôi (tên trường, chế độ gửi ...?).

require('OAuth2/Client.php');
require('OAuth2/GrantType/IGrantType.php');
require('OAuth2/GrantType/AuthorizationCode.php');

const CLIENT_ID     = 'XXX';
const CLIENT_SECRET = 'XX';

const REDIRECT_URI           = 'http://127.0.0.1/test_api_wp/test.php';

const AUTHORIZATION_ENDPOINT = 'http://wordpress.local/oauth/authorize';
const TOKEN_ENDPOINT         = 'http://wordpress.local/oauth/token';

$client = new OAuth2\Client(CLIENT_ID, CLIENT_SECRET);

if (!isset($_GET['code']))
{
    $auth_url = $client->getAuthenticationUrl(AUTHORIZATION_ENDPOINT, REDIRECT_URI);
    header('Location: ' . $auth_url);
    die('Redirect');
}
else
{
    $params = array('code' => $_GET['code'], 'redirect_uri' => REDIRECT_URI);
    $response = $client->getAccessToken(TOKEN_ENDPOINT, 'authorization_code', $params); //authorization_code
    $token = $response['result']['access_token'];
    $client->setAccessToken($token);
    $client->setAccessTokenType(OAuth2\Client::ACCESS_TOKEN_BEARER);

}

$values = array(
    "date" => "2015-11-26 10:00:00",
    "date_gmt" => "2015-11-26 09:00:00",
    "modified" => "2015-11-26 10:00:00",
    "modified_gmt" => "2015-11-26 09:00:00",
    "status" => "future",
    "title" => "Titre media",       
    "description" => "description media",
    "media_type" => "image",
    "source_url" => "https://www.base64-image.de/build/img/mr-base64-482fa1f767.png"
);

$data = $client->fetch("wordpress.local/wp-json/wp/v2/media", $values, "POST");
echo "<pre>";print_r($data);echo "</pre>";

Phản hồi :

Array
(
    [result] => Array
        (
            [code] => rest_upload_no_data
            [message] => No data supplied
            [data] => Array
                (
                    [status] => 400
                )

        )

    [code] => 400
    [content_type] => application/json; charset=UTF-8
)

Bất kỳ ý tưởng? Cảm ơn rất nhiều

10
kain34440

VÌ THẾ! Đây là niềm vui.

Hãy nhớ rằng WP-API vẫn đang trong quá trình hoàn thiện.

Bố trí nội dung

Tôi đã tìm thấy một vấn đề được báo cáo trong hàng đợi vấn đề WP-API về Xử lý nội dung. Đây là một tiêu đề bắt buộc để đăng nội dung phương tiện mới và có một số yêu cầu rất, rất nghiêm ngặt khi cung cấp nội dung này ở định dạng phù hợp.

Mục đích tạo điểm cuối truyền thông

Đầu tiên, chúng ta hãy lùi lại một bước. API giả định tại thời điểm này bạn đã tải lên một tệp mới vào đúng thư mục. Điểm cuối này đang tạo nội dung đa phương tiện trong cơ sở dữ liệu tham chiếu tệp này.

Giải pháp

Bạn phải chỉ định tên tệp của tệp phương tiện để liên kết với nội dung mới của bạn. Đây không thể là một url từ xa. Như bạn có thể thấy từ tài liệu v2 , source_urllink là chỉ đọc. Tất cả những gì bạn phải làm để gửi thành công nội dung mới của bạn là thêm phần sau vào tiêu đề của bạn:

'Content-Disposition' => 'filename=name-of-file.jpg',

Như đã đề cập trong vé, bạn không thể thêm dấu ngoặc kép hoặc chỉ định phương thức bạn đang sử dụng để gửi tệp. Nó phải ở định dạng trên. Ít nhất, đây là trường hợp cho đến khi họ thay đổi tất cả xung quanh.

Đảm bảo loại tệp là một trong loại tệp được chấp nhận và bạn bao gồm phần mở rộng của tệp được bao gồm trong yêu cầu. Cảm ơn Dr Deo trong các bình luận.

Đối với hồ sơ, tôi đã cười với niềm vui thích khi cuối cùng tôi đã tìm ra điều này ... sợ vợ tôi ra khỏi địa ngục.

8
MikeNGarrett

Để "tham khảo chéo", hãy xem câu trả lời liên quan của tôi ở đây trên StackOverflow về tải lên phương tiện và sử dụng phương tiện đó làm "phương tiện đặc trưng" cho bài đăng.

2
pHiL