Quale URL passare a wp_remote_get per caricare il corpo dell'anteprima del post corrente?

24 nov 2010, 16:23:14
Visualizzazioni: 2.32K
Voti: 1

Nel codice seguente, sto cercando di ottenere un riferimento al contenuto del corpo dell'anteprima completamente renderizzata del post corrente...

$response = wp_remote_retrieve_body(wp_remote_get('http://localhost/mysite/test-post/?preview=true&preview_id=28&preview_nonce=640bc54ca4'));
$post->post_content =  $response;

Lo sto semplicemente inviando a $post->post_content così da poterlo visualizzare facilmente.

Ecco parte di ciò che restituisce...

<body id="error-page">
<p>Non hai il permesso di visualizzare le bozze.</p></body>
</html>

Sono loggato come amministratore, quindi ovviamente sto chiamando l'anteprima in modo errato. Come posso passare l'URL in wp_remote_get per ottenere la sezione body dello stream di anteprima?

Quando uso...

$post->post_content =  "<pre>".$response['body']."</pre>";

Ottengo

<pre><</pre>
2
Commenti

Mi sto perdendo qualcosa o non c'era già una domanda correlata a questo?

hakre hakre
24 nov 2010 17:01:37

@hakre: Ho riformulato la domanda una volta arrivato al nocciolo del problema ;)

Scott B Scott B
24 nov 2010 17:13:34
Tutte le risposte alla domanda 1
0

L'URL va bene, quello che devi aggiungere sono i cookie che ti autenticano come l'utente autorizzato a visualizzare l'anteprima. In pratica significa inviare degli header. Comincerei con la HTTP API (Wordpress Codex) cercando un metodo per aggiungere header HTTP aggiuntivi e impostare i tuoi cookie.

In alternativa - perché probabilmente è un po' complicato - potresti dare un'occhiata al codice dell'anteprima per vedere se puoi fornire un hook per controllare l'accesso alle anteprime. Se possibile, puoi aggiungere un parametro segreto all'URL che ti permetterà di visualizzare qualsiasi pagina senza la necessità di essere loggato (e senza la necessità di un nonce, che altrimenti sarebbe richiesto anche per l'anteprima).

Il risultato del primo o del secondo approccio è praticamente lo stesso, l'unica differenza sarebbe come attivarlo.

24 nov 2010 16:57:44