Diferența dintre the_content() și get_post() în WordPress?
Lucrez la personalizarea unui temă și trebuie să separ conținutul postării pentru a elimina o parte din text. Folosesc următorul cod:
$custom_Get_Post_Title = explode('|',get_post()->post_content);
echo "<h4>" . $custom_Get_Post_Title[0] . "</h4>";
echo "<p>" . $custom_Get_Post_Title[1] . "</p>";
Inițial, dezvoltatorul folosea următorul cod pentru a afișa conținutul postării, dar îmi era dificil să separ datele.
global $post;
setup_postdata($post);
the_content();
ÎNTREBARE: Care este diferența dintre aceste două metode care preiau conținutul postării?

post_content
este o proprietate a obiectului WP_Post
. WP_Post
este un obiect care reprezintă datele postării din baza de date. Astfel, post_content
conține conținutul brut așa cum este stocat în baza de date.
the_content()
este o funcție de șablon (template tag) care afișează conținutul postării curente. 'Postarea curentă' se referă la orice este setat în variabila globală $post
în momentul rulării funcției. Variabila globală $post
este de obicei setată în Loop-ul principal (The Loop) cu while( have_posts() ) : the_post();
.
Diferența crucială este că the_content()
procesează conținutul brut prin mai multe filtre care îl pregătesc pentru afișare. Acestea fac lucruri cum ar fi adăugarea de tag-uri de paragraf, conversia URL-urilor în embed-uri pentru videoclipuri și transformarea simbolurilor precum ghilimelele în ghilimele inteligente etc. Multe plugin-uri utilizează și acest filtru pentru a adăuga elemente precum butoane de partajare.
Deci, dacă doar afișezi post_content
direct, probabil nu va arăta corect. Poți reproduce rezultatul funcției the_content()
pe date brute aplicând manual filtrul the_content
. De exemplu, ai putea face:
$post = get_post();
$split_content = explode( '|', $post->post_content );
echo '<h4>' . $split_content[0] . '</h4>';
echo apply_filters( 'the_content', $split_content[1] );

get_post()
este același lucru cu global $post
Funcții precum the_content()
pot fi utilizate doar în interiorul unei bucle.
Funcția setup_postdata()
poate fi utilizată pentru a face aceste funcții disponibile.
Exemplul tău de sus poate fi rescris după cum urmează:
global $post;
$custom_Get_Post_Title = explode('|',$post->post_content);
sau ai putea face ceva similar cu exemplul de jos:
global $post;
// setup_postdata($post); <- nu este cu adevărat necesar
$theContent = get_the_content($post->ID); // poți folosi post-id pentru a prelua un anumit conținut
$custom_Get_Post_Title = explode('|',get_post()->post_content);
