Передача текущих файлов cookie в wp_remote_get для предварительного просмотра черновика публикации

9

Я хочу передать файлы текущего пользователя в функцию wp_remote_get, чтобы получить содержимое страницы предварительного просмотра черновика.

Я проверяю уже вопросы:

Но в любом из них появляется, как я могу получить куки для передачи его в функцию wp_remote_get .

Я предполагаю, что могу делать то, что хочу, передавая куки в функцию wp_remote_get , здесь, в документации WordPress, упоминается, как WordPress хранит куки, но как я могу получить их, следя за тем, чтобы они использовали хеш-значение в имени куки?

То, что я хочу сделать, - это получить идентификатор поста, получить содержимое страницы просмотра поста WordPress и проанализировать его. Для уже опубликованных сообщений все работает нормально, но для черновиков сообщений я понимаю, что страница не существует. Вот упрощенный код:

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

Этот код выполняется, когда владелец Почты редактирует его, поэтому пользователь уже аутентифицирован и запрос направлен на локальную Почту. Как мне добиться, чтобы wp_remote_get вернул мне содержимое страницы предварительного просмотра? как WordPress, когда я захожу по ссылке предварительного просмотра в моем браузере.

Заранее спасибо.

Летисия
источник

Ответы:

7

Я редко имею дело с куки-файлами и не уверен в полной механике, но вот основной рабочий пример передачи куки-файлов текущего пользователя для получения источника страницы предварительного просмотра:

$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 );
Rarst
источник
0

Каков сценарий здесь, вы пытаетесь получить предварительный просмотр предварительного просмотра из вашей текущей установки, расположенной в другой, верно?

Вы аутентифицируете себя перед поиском?

Я думаю, что вам нужно использовать,

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

Тогда вам может понадобиться бежать,

wp_set_current_user($user_id);

С wp_set_current_userвозможно нужность на самом деле получить доступ к превью (?). Я скажу, что я не уверен на 100% в этом, но я считаю, что это необходимо для экрана редактирования поста, так что, будучи его расширением, можно предположить, что так. У вас еще не было возможности просмотреть файлы ядра для подтверждения.

Это должно установить файлы cookie для вас и позволить вам просматривать предварительный просмотр, что означает, что вам теоретически не нужно ничего передавать в параметр массива cookie, поскольку они уже установлены.

Давайте посмотрим ваш код тоже!

Адам
источник
Спасибо, я обновляю вопрос информацией, которую вы мне задаете.
Летисия
Упомянутые функции не помогают мне, потому что пользователь уже вошел в систему, и я хочу использовать его куки, чтобы получить предварительный просмотр черновика.
Летисия