Passando os cookies atuais em wp_remote_get para obter a Visualização da Publicação de Rascunho

9

Desejo passar os cookies do usuário atual na função wp_remote_get para obter um conteúdo da página Visualização de rascunho da postagem.

Já verifico as perguntas:

Mas em qualquer um deles aparece como posso obter os cookies para passar a função wp_remote_get .

Suponho que posso fazer o que eu quero passar os cookies para a função wp_remote_get , aqui na documentação do WordPress mencione como o WordPress armazena os cookies, mas como posso fazê-los tomar cuidado para que usem um valor de hash no nome do cookie?

O que eu quero fazer é receber uma ID da postagem, obter o conteúdo da página de visualização de postagem do WordPress e analisá-la. Para os Posts já publicados, tudo funciona bem, mas para os Rascunhos de Posts, entendo que a página não existe. Aqui está o código simplificado:

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

Esse código é executado quando o proprietário da publicação a está editando, para que o usuário já esteja autenticado e a solicitação seja para uma publicação local. Como posso concluir que o wp_remote_get me retorna o conteúdo da página Post Preview? como o WordPress faz quando vou ao link de visualização no meu navegador.

Agradeço antecipadamente.

Leticia
fonte

Respostas:

7

Raramente lido com cookies e não tenho certeza sobre a mecânica completa, mas aqui está um exemplo básico de como passar os cookies do usuário atual para recuperar a fonte da página de visualização:

$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
fonte
0

Qual é o cenário aqui, você está tentando recuperar uma pré-visualização de rascunho da sua instalação atual, localizada em outra, certo?

Você está se autenticando antes de recuperar?

Estou pensando que você precisaria usar,

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

Então você também pode precisar executar,

wp_set_current_user($user_id);

Com wp_set_current_usereventualmente, ser necessário para realmente acessar a visualização (?). Vou dizer que não tenho 100% de certeza disso, mas acredito que seja necessário para a tela de pós-edição, sendo uma extensão disso, seria de se supor. Ainda não tivemos a chance de verificar os arquivos principais em busca de confirmação.

Isso deve definir os cookies para você e permitir que você visualize sua visualização, o que significa que você teoricamente não precisa passar nada para o parâmetro da matriz de cookies, pois eles já estão definidos.

Vamos ver o seu código também!

Adão
fonte
Obrigado, atualizo a pergunta com as informações que você me pergunta.
leticia
As funções mencionadas não me ajudam porque o usuário já está logado e eu quero usar seus cookies para obter a Visualização de um rascunho.
Leticia