Differenza tra the_content() e get_post() in WordPress?

25 gen 2018, 23:21:17
Visualizzazioni: 14.3K
Voti: 7

Sto lavorando alla personalizzazione di un tema e ho bisogno di suddividere il contenuto del post per rimuovere del testo. Utilizzo il seguente codice:

$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>";

Inizialmente, lo sviluppatore utilizzava questo codice per visualizzare il contenuto del post, ma rendeva difficile la suddivisione dei dati.

global $post;
setup_postdata($post);
the_content();

DOMANDA: Qual è la differenza tra questi due metodi che recuperano entrambi il contenuto del post?

0
Tutte le risposte alla domanda 2
0

post_content è una proprietà dell'oggetto WP_Post. WP_Post è un oggetto che rappresenta i dati del post provenienti dal database. Quindi post_content contiene il contenuto grezzo così come è memorizzato nel database.

the_content() è un tag template che visualizza il contenuto del post corrente. Il 'post corrente' è qualsiasi valore sia assegnato alla variabile globale $post al momento dell'esecuzione della funzione. La variabile globale $post viene normalmente impostata all'interno del Loop con while( have_posts() ) : the_post();.

La differenza cruciale è che the_content() elabora il contenuto grezzo attraverso diversi filtri che lo preparano per la visualizzazione. Questi eseguono operazioni come l'aggiunta di tag di paragrafo, la conversione di URL in embed per elementi come i video e la conversione di simboli come le virgolette in virgolette intelligenti, ecc. Molti plugin utilizzano anche questo filtro, per aggiungere elementi come i pulsanti di condivisione.

Quindi, se si stampa semplicemente post_content, probabilmente non apparirà correttamente. È possibile replicare l'output di the_content() su dati grezzi applicando manualmente il filtro the_content. Nell'esempio fornito, si farebbe così:

$post = get_post();

$split_content = explode( '|', $post->post_content );

echo '<h4>' . $split_content[0] . '</h4>';              
echo apply_filters( 'the_content', $split_content[1] );
26 gen 2018 06:17:59
0

get_post() è equivalente a global $post

Funzioni come the_content() possono essere utilizzate solo all'interno di un loop.

La funzione setup_postdata() può essere usata per rendere disponibili queste funzioni.

Il tuo primo esempio potrebbe essere riscritto così:

global $post;
$custom_Get_Post_Title = explode('|',$post->post_content);

oppure potresti fare qualcosa di simile con l'esempio seguente:

global $post;
// setup_postdata($post); <- non strettamente necessario
$theContent = get_the_content($post->ID); // possiamo usare l'ID del post per recuperarlo specificamente
$custom_Get_Post_Title = explode('|',get_post()->post_content);
25 gen 2018 23:44:05