Obține conținutul unei postări după ID
Cum pot obține conținutul unei postări după ID-ul acesteia? Am încercat get_page('ID');
pentru a afișa conținutul, dar nu funcționează.

Puteți face acest lucru în mai multe moduri. Iată cele mai bune două metode.
$post_id = 5// exemplu de ID post
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo do_shortcode( $content );//execută shortcode-urile
Altă metodă
$content = get_post_field('post_content', $post_id);
echo do_shortcode( $content );//execută shortcode-urile
După sugestia lui Pieter Goosen despre apply_filters
.
Puteți folosi apply_filters
dacă doriți ca conținutul să fie filtrat de alte plugin-uri. Astfel, elimină necesitatea de a folosi do_shortcode
.
Exemplu
$post_id = 5// exemplu de ID post
$post_content = get_post($post_id);
$content = $post_content->post_content;
echo apply_filters('the_content',$content);
//nu este nevoie să folosiți do_shortcode, dar conținutul poate fi filtrat de alte plugin-uri.
Dacă nu doriți să permiteți altor plugin-uri să filtreze acest conținut și aveți nevoie de funcția shortcode, atunci folosiți do_shortcode
.
Dacă nu doriți nici shortcode-uri, atunci lucrați direct cu post_content
.

Salut, mulțumesc pentru întrebare. @PieterGoosen Deoarece obținem conținutul brut
al postării. Orice shortcode încorporat în postare nu va fi procesat. așa că facem asta manual cu do_shortcode

O metodă mai bună ar fi să folosiți apply_filters( 'the_content', $content );
, în acest fel, toate filtrele aplicate la the_content()
precum wpautop
și handler-ul de shortcode, sunt aplicate și la $content
. ;-). Observați pluralul filters

Voi lăsa aici o altă metodă mai puțin elegantă, dar care poate fi utilă uneori. Desigur, metodele care folosesc apelurile API sunt întotdeauna preferate (get_post(), get_the_content(), ...).
global $wpdb;
$post_id = 123; // introduceți ID-ul postării dorite
$post_content_raw = $wpdb->get_var(
$wpdb->prepare(
"select post_content from $wpdb->posts where ID = %d",
$post_id
)
);
