Melewati cookie saat ini di wp_remote_get untuk mendapatkan Draft Post Preview


9

Saya ingin meneruskan cookie pengguna saat ini dalam fungsi wp_remote_get untuk mendapatkan konten halaman Draft Post Preview.

Saya sudah memeriksa pertanyaan:

Tetapi di salah satu dari mereka muncul bagaimana saya bisa mendapatkan cookie untuk meneruskannya ke fungsi wp_remote_get .

Saya berasumsi bahwa saya dapat melakukan apa yang saya inginkan untuk mengirimkan cookie ke fungsi wp_remote_get , di sini di dokumentasi WordPress menyebutkan bagaimana WordPress menyimpan cookie tetapi bagaimana saya bisa membuat mereka merawatnya mereka menggunakan nilai hash dalam nama cookie?

Yang ingin saya lakukan adalah diberi ID Post untuk mendapatkan konten dari halaman tampilan WordPress Post dan menganalisisnya. Untuk Tulisan yang sudah diterbitkan semua berfungsi dengan baik, tetapi untuk Draft Posting saya mendapatkan bahwa halaman tersebut tidak ada. Berikut adalah kode yang disederhanakan:

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

Kode ini dieksekusi ketika pemilik Post sedang mengeditnya, sehingga pengguna sudah diautentikasi dan permintaannya untuk Post lokal. Bagaimana saya dapat mencapai hal itu wp_remote_get mengembalikan saya konten halaman Pratinjau Posting? seperti yang dilakukan WordPress ketika saya membuka tautan pratinjau di browser saya.

Terima kasih sudah mahir.

Jawaban:


7

Saya jarang berurusan dengan cookie dan tidak yakin tentang mekanisme lengkap di sana, tapi di sini adalah contoh kerja dasar untuk melewatkan cookie pengguna saat ini untuk mengambil sumber halaman pratinjau:

$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

Apa skenarionya di sini, Anda mencoba mengambil pratinjau draf posting dari instalasi Anda saat ini, berlokasi di yang lain, kan?

Apakah Anda mengautentikasi diri Anda sebelum mengambil?

Saya berpikir bahwa Anda perlu menggunakan,

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

Maka Anda mungkin perlu juga menjalankan,

wp_set_current_user($user_id);

Dengan wp_set_current_userkemungkinan diperlukan untuk benar-benar mengakses pratinjau (?). Saya akan mengatakan saya tidak 100% yakin akan hal itu, tetapi saya percaya ini perlu untuk layar edit posting, jadi sebagai perpanjangan dari itu, orang akan menganggapnya demikian. Belum sempat melihat-lihat file inti untuk konfirmasi.

Itu akan mengatur cookie untuk Anda dan memungkinkan Anda untuk melihat pratinjau Anda, yang berarti Anda secara teoritis tidak harus mengirimkan apa pun ke parameter array cookie karena sudah ditetapkan.

Mari kita melihat kode Anda juga!


Terima kasih, saya memperbarui pertanyaan dengan informasi yang Anda tanyakan kepada saya.
leticia

Fungsi yang direferensikan tidak membantu saya karena pengguna sudah masuk dan saya ingin menggunakan cookie untuk mendapatkan Pratinjau Draf.
leticia
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.