Impostare manualmente le variabili globali $post con un ID per utilizzare i tag del template
Ho una funzione che recupera gli ID dei post attraverso metodi molto specifici.
Ho bisogno di poter impostare il global $post
per utilizzare funzioni come the_content()
, che non accetta un ID come parametro.
Come posso ottenere questo risultato?

Per lavorare con i post fuori dal loop prova a utilizzare:
get_post(post_id)
per ottenere un post con un ID specifico al di fuori del loop. Quando fai questo, l'oggetto globale $post conterrà il post che hai appena selezionato. Ora puoi ottenere il contenuto usando:
$post->post_content
.
Consulta la documentazione di get_post sul Codex di WordPress

Puoi utilizzare una singola riga di codice per resettare l'oggetto post globale.
setup_postdata( $GLOBALS['post'] =& $custom_post_object );
Quando completi il tuo template o loop, assicurati di resettare il post globale per non compromettere altri template successivi nello stack.
wp_reset_postdata();
Nota: PHPCS con gli standard WordPress segnalerà l'override del post globale, quindi se stai utilizzando questi standard dovrai disabilitare il controllo per quella riga in questo modo:
setup_postdata( $GLOBALS['post'] =& $post ); //phpcs:ignore
