Usare the_content fuori dal loop
Stavo cercando di ottenere i primi 100 caratteri del contenuto nell'header, e ho usato il seguente snippet per ottenere i primi 100 caratteri nel loop, ma è possibile ottenere il valore fuori dal loop:
$cstring = get_the_content( '' );
$newcString = substr( $cstring, 0, 100 );
echo'<p>' . $newcString . '</p>';

Ho scritto un articolo su questo argomento qui, ma ecco un riassunto dei punti principali:
the_content
può essere utilizzato solo 'all'interno del loop'- 'all'interno del loop' può essere correttamente 'simulato' solo chiamando
setup_postdata()
eglobal $post
. - Successivamente è necessario ripulire il tutto chiamando
wp_reset_postdata()
Il codice seguente fornisce una funzione per recuperare il contenuto di un post dal suo ID. Differisce dalla risposta di @NickYoung in quanto il contenuto che ricevi non è quello memorizzato nella colonna post_content
della tabella dei post, ma piuttosto quel contenuto dopo essere passato attraverso il filtro the_content
(ad esempio con shortcodes elaborati, ecc.).
Il codice
/**
* Visualizza il contenuto del post. Facoltativamente permette di passare l'ID del post
* @uses the_content()
* @link http://stephenharris.info/get-post-content-by-id/
* @link https://wordpress.stackexchange.com/questions/142957/use-the-content-outside-the-loop
* @param int $id Opzionale. ID del post.
* @param string $more_link_text Opzionale. Testo per il link "continua a leggere".
* @param bool $stripteaser Opzionale. Rimuovi il contenuto teaser prima del testo "continua a leggere". Default è false.
*/
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
global $post;
$post = get_post($post_id);
setup_postdata( $post, $more_link_text, $stripteaser );
the_content();
wp_reset_postdata( $post );
}

È un ottimo punto che non sia filtrato. In quel caso potresti usare $post->post_content_filtered penso, giusto? Non ho mai usato questa versione prima ma sembra che potrebbe funzionare.

Puoi usare get_page() o get_post() per ottenere contenuti al di fuori del loop
//Per una pagina
$page_id = 1;
$get_page_object = get_page( $page_id );
$page_object = $get_page_object->post_content;
echo $newpagecString = substr($page_object, 0, 100);
//Per un articolo
$post_id = 2;
$get_post_object = get_post( $post_id );
$post_object = $get_post_object->post_content;
echo $newpostcString = substr($post_object, 0, 100);

E perché c'è $get_page_object
se non lo stiamo chiamando da nessuna parte?

E $post_id = 2;
è l'ID del post corrente? Possiamo chiamarlo con $post_id = $wp_query->post->ID;
?

$post_id è l'id del post da cui vuoi recuperare i dati.$wp_query->post->ID; funzionerà nel loop.Ma penso che tu volessi ottenere il contenuto di una pagina o post al di fuori del loop.
