Passando i cookie correnti in wp_remote_get per ottenere l'anteprima di Draft Post


9

Voglio passare i cookie degli utenti correnti nella funzione wp_remote_get per ottenere il contenuto della pagina Anteprima post bozza.

Controllo già le domande:

Ma in entrambi appare come posso ottenere i cookie per passare alla funzione wp_remote_get .

Presumo di poter fare quello che voglio passando i cookie alla funzione wp_remote_get , qui nella documentazione di WordPress menzioniamo come WordPress memorizza i cookie ma come posso farli avere cura che utilizzino un valore di hash nel nome del cookie?

Quello che voglio fare è dare un ID Post ottenere il contenuto della pagina di visualizzazione Post di WordPress e analizzarlo. Per i Post già pubblicati tutto funziona bene, ma per Draft Posts ho capito che la pagina non esiste. Ecco il codice semplificato:

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

Questo codice viene eseguito quando il proprietario della Posta lo sta modificando, quindi l'utente è già autenticato e la richiesta è per una Posta locale. Come posso ottenere che wp_remote_get mi restituisca il contenuto della pagina di anteprima post? come fa WordPress quando vado al link di anteprima nel mio browser.

Grazie in anticipo.

Risposte:


7

Raramente mi occupo di cookie e non sono sicuro della meccanica completa lì, ma ecco un esempio di lavoro di base sul passaggio dei cookie dell'utente corrente per recuperare la fonte della pagina di anteprima:

$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

Qual è lo scenario qui, stai cercando di recuperare una bozza di anteprima post dalla tua installazione corrente, situata su un altro, giusto?

Ti stai autenticando prima del recupero?

Sto pensando che avresti bisogno di usare,

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

Quindi potrebbe essere necessario eseguire anche

wp_set_current_user($user_id);

Con wp_set_current_usereventualmente essere necessario per accedere in realtà l'anteprima (?). Dirò che non ne sono sicuro al 100%, ma credo sia necessario per la schermata di modifica post, quindi essendo un'estensione di ciò, si potrebbe supporre che. Non ho ancora avuto la possibilità di cercare i file core per la conferma.

Ciò dovrebbe impostare i cookie per te e consentirti di visualizzare l'anteprima, il che significa che teoricamente non devi passare nulla nel parametro dell'array di cookie poiché sono già impostati.

Vediamo anche il tuo codice!


Grazie, aggiorno la domanda con le informazioni che mi chiedi.
Leticia,

Le funzioni citate non mi aiutano perché l'utente è già registrato e voglio usare i suoi cookie per ottenere l'anteprima di una bozza.
Leticia,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.