Impostare manualmente le variabili globali $post con un ID per utilizzare i tag del template

10 ott 2011, 15:19:57
Visualizzazioni: 36.3K
Voti: 27

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?

1
Commenti

Cosa intendi esattamente con "impostare il global $post"? Potresti per favore a) postare la funzione che recupera gli ID e illustrare/schizzare il tuo caso d'uso?

kaiser kaiser
10 ott 2011 16:21:28
Tutte le risposte alla domanda 4
0
44

Quando stai attraversando il tuo ciclo, aggiungi questo:

global $post; 
$post = get_post( $ID, OBJECT );
setup_postdata( $post );

//Fai qualcosa

wp_reset_postdata();
28 mag 2012 09:36:02
0

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

11 ott 2011 06:58:35
0

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
29 lug 2021 19:59:03
0

Una soluzione che funziona per me è:

  1. global $post; prima del loop
  2. setup_postdata($post); dentro il loop
  3. wp_reset_postdata(); dopo il loop

Tieni presente che il nome della variabile deve essere $post

9 ott 2021 21:52:06