Ottenere il contenuto di un post tramite ID
Come posso ottenere il contenuto di un post tramite il suo ID? Ho provato get_page('ID');
per mostrare il contenuto ma non funziona.

Puoi farlo in diversi modi. Ecco i due migliori.
$post_id = 5// ID del post di esempio
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo do_shortcode( $content );//esecuzione degli shortcode
Un altro metodo
$content = get_post_field('post_content', $post_id);
echo do_shortcode( $content );//esecuzione degli shortcode
Dopo il suggerimento di Pieter Goosen su apply_filters
.
Puoi usare apply_filters
se vuoi che il contenuto venga filtrato da altri plugin. In questo modo non è necessario usare do_shortcode
Esempio
$post_id = 5// ID del post di esempio
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo apply_filters('the_content',$content);
//non è necessario usare do_shortcode, ma il contenuto potrebbe essere filtrato da altri plugin.
Se non vuoi permettere ad altri plugin di filtrare questo contenuto e hai bisogno della funzione shortcode, allora usa do_shortcode
.
Se non vuoi nemmeno gli shortcode, lavora direttamente con post_content
.

Ciao, grazie per la domanda. @PieterGoosen Dato che stiamo ottenendo il contenuto grezzo
del post, qualsiasi shortcode incorporato nel post non verrà elaborato. Quindi lo facciamo manualmente con do_shortcode

Un modo migliore sarebbe usare apply_filters( 'the_content', $content );
, in questo modo tutti i filtri applicati a the_content()
come wpautop
e il gestore degli shortcode, vengono applicati a $content
. ;-). Nota il plurale filters

Ecco un altro metodo poco elegante che potrebbe tornarti utile in alcuni casi. Ovviamente, è sempre preferibile utilizzare le chiamate API ufficiali come get_post(), get_the_content(), ecc.
global $wpdb;
$post_id = 123; // inserisci qui l'ID del post che desideri
$post_content_raw = $wpdb->get_var(
$wpdb->prepare(
"select post_content from $wpdb->posts where ID = %d",
$post_id
)
);
