Setarea manuală a variabilelor globale $post cu un ID pentru a utiliza tag-uri template

10 oct. 2011, 15:19:57
Vizualizări: 36.3K
Voturi: 27

Am o funcție care recuperează ID-uri ale postărilor prin mijloace foarte specifice.

Am nevoie să pot seta global $post pentru a utiliza funcții precum the_content(), care nu permite un ID ca parametru.

Cum pot realiza acest lucru?

1
Comentarii

Ce anume înțelegi prin "set the global $post"? Te rog să a) postezi funcția care preia ID-urile și să ilustrezi/schițezi cazul tău de utilizare?

kaiser kaiser
10 oct. 2011 16:21:28
Toate răspunsurile la întrebare 4
0
44

Când parcurgi bucla ta, adaugă următoarele:

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

//Fă ceva

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

Pentru a lucra cu postări în afara buclei, încearcă să utilizezi:

get_post(post_id)

pentru a obține o postare cu un ID specific în afara buclei. Când faci asta, obiectul global $post va conține postarea pe care tocmai ai selectat-o. Acum poți obține conținutul folosind:

$post->post_content.

Verifică documentația get_post pe WordPress Codex

11 oct. 2011 06:58:35
0

Puteți utiliza o singură linie de cod pentru a reseta obiectul global post.

setup_postdata( $GLOBALS['post'] =& $custom_post_object );

Când terminați șablonul sau bucla, asigurați-vă că resetați postul global pentru a nu afecta alte șabloane ulterioare.

wp_reset_postdata();

Notă: PHPCS cu standardele WordPress se va plânge despre suprascrierea postului global, așa că dacă utilizați standardele WordPress, va trebui să dezactivați verificarea pentru linia respectivă, astfel:

setup_postdata( $GLOBALS['post'] =& $post ); //phpcs:ignore
29 iul. 2021 19:59:03
0

O soluție care funcționează pentru mine este:

  1. global $post; înainte de buclă
  2. setup_postdata($post); în interiorul buclei
  3. wp_reset_postdata(); după buclă

Ține cont că numele variabilei trebuie să fie $post

9 oct. 2021 21:52:06