Diferența dintre the_content() și get_post() în WordPress?

25 ian. 2018, 23:21:17
Vizualizări: 14.3K
Voturi: 7

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?

0
Toate răspunsurile la întrebare 2
0

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] );
26 ian. 2018 06:17:59
0

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);
25 ian. 2018 23:44:05