Vượt qua các cookie hiện tại trong wp_remote_get để nhận Bản xem trước bài viết


9

Tôi muốn vượt qua cookie người dùng hiện tại trong chức năng wp_remote_get để có được nội dung trang Dự thảo bài xem trước.

Tôi đã kiểm tra các câu hỏi:

Nhưng trong một trong số chúng xuất hiện làm thế nào tôi có thể đưa cookie đến vượt qua nó đến hàm wp_remote_get .

Tôi giả sử tôi có thể làm những gì tôi muốn chuyển cookie sang hàm wp_remote_get , ở đây trong tài liệu WordPress đề cập đến cách WordPress lưu trữ cookie nhưng làm cách nào tôi có thể chăm sóc họ sử dụng giá trị băm trong tên cookie?

Những gì tôi muốn làm là được cung cấp một ID bài đăng lấy nội dung của trang xem Bài đăng WordPress và phân tích nó. Đối với các Bài viết đã được xuất bản, tất cả đều hoạt động tốt, nhưng đối với Bài viết nháp tôi nhận thấy rằng trang không tồn tại. Đây là mã được đơn giản hóa:

(...)
$post_permalink = get_permalink($post_id);
$response = wp_remote_get($post_permalink);
$whole_post_page = $response['body'];
(...)

Mã này được thực thi khi chủ sở hữu của Bài đăng đang chỉnh sửa nó, vì vậy người dùng đã được xác thực và yêu cầu dành cho Bài đăng cục bộ. Làm cách nào tôi có thể hoàn thành wp_remote_get trả lại cho tôi nội dung trang Xem trước bài đăng? như WordPress làm khi tôi đi đến liên kết xem trước trong trình duyệt của mình.

Cảm ơn trong nâng cao.

Câu trả lời:


7

Tôi hiếm khi xử lý cookie và không chắc chắn về cơ chế hoàn chỉnh ở đó, nhưng đây là ví dụ hoạt động cơ bản về việc chuyển cookie của người dùng hiện tại để lấy nguồn trang xem trước:

$preview_link = set_url_scheme( get_permalink( $post->ID ) );
$preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ) ) );
$cookies      = array();

foreach ( $_COOKIE as $name => $value ) {
    $cookies[] = new WP_Http_Cookie( array( 'name' => $name, 'value' => $value ) );
}

$request = wp_remote_get( $preview_link, array( 'cookies' => $cookies ) );
$body    = wp_remote_retrieve_body( $request );

0

Kịch bản ở đây là gì, bạn đang cố truy xuất bản xem trước bài đăng từ bản cài đặt hiện tại của mình, nằm trên một cái khác, phải không?

Bạn đang xác thực bản thân trước khi lấy?

Tôi nghĩ rằng bạn sẽ cần phải sử dụng,

wp_signon($credentials, $secure_cookie); $secure_cookie is boolean

Sau đó, bạn có thể cần phải chạy,

wp_set_current_user($user_id);

Với wp_set_current_userkhả năng cần thiết để thực sự truy cập vào bản xem trước (?). Tôi sẽ nói rằng tôi không chắc chắn 100% về điều đó, nhưng tôi tin rằng nó cần thiết cho màn hình chỉnh sửa bài đăng, vì vậy là một phần mở rộng của điều đó, người ta sẽ cho là như vậy. Chưa có cơ hội xem xét các tập tin cốt lõi để xác nhận.

Điều đó sẽ đặt cookie cho bạn và cho phép bạn xem bản xem trước của mình, điều đó có nghĩa là về mặt lý thuyết bạn không phải chuyển bất kỳ thứ gì vào tham số mảng cookie như chúng đã được đặt.

Hãy xem mã của bạn quá!


Cảm ơn, tôi cập nhật câu hỏi với thông tin bạn hỏi tôi.
leticia

Các chức năng được tham chiếu không giúp tôi vì người dùng đã đăng nhập và tôi muốn sử dụng cookie của nó để có Bản xem trước của Dự thảo.
leticia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.