Obține conținutul unei postări după ID

6 ian. 2016, 08:37:49
Vizualizări: 61.1K
Voturi: 10

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ă.

1
Comentarii

Voturi negative deoarece nici măcar nu ai încercat să citești documentația despre get_page(). Această funcție a fost învechită (deprecated) de foarte mult timp. De asemenea, există o cantitate nelimitată de resurse pe site referitoare la această problemă, chiar și Google are o grămadă de informații despre asta

Pieter Goosen Pieter Goosen
6 ian. 2016 09:25:19
Toate răspunsurile la întrebare 4
4
19

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.

6 ian. 2016 08:58:42
Comentarii

Doar mă întrebam de ce folosiți do_shortcode

Pieter Goosen Pieter Goosen
6 ian. 2016 09:25:56

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

WPTC-Troop WPTC-Troop
6 ian. 2016 09:36:52

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

Pieter Goosen Pieter Goosen
6 ian. 2016 09:59:43

Da, utilizarea apply_filters în loc de do_shortcode are sens. Dar utilizarea apply_filter este pur și simplu bazată pe decizia lor de mediu. Permiteți-mi să actualizez și răspunsul meu. Mulțumesc mult pentru grija față de comunitate @PieterGoosen

WPTC-Troop WPTC-Troop
6 ian. 2016 11:04:15
0

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
    )
);
19 nov. 2016 12:32:50
1
$id = 23; // adaugă ID-ul paginii unde este zero
$p = get_page($id);
$t = $p->post_title;
echo '<h3>'.apply_filters('post_title', $t).'</h3>'; // titlul este aici încadrat în h3
echo apply_filters('the_content', $p->post_content);
19 ian. 2018 08:28:45
Comentarii

Te rog să [editezi] răspunsul tău și să adaugi o explicație: de ce ar putea rezolva această soluție problema?

fuxia fuxia
19 ian. 2018 08:30:13
1
-1

Folosind get_page('ID').

$page_id = 123;  //ID-ul paginii
$page_data = get_page($page_id); 
$title = $page_data->post_title; 
$content = $page_data->post_content;
6 ian. 2016 09:26:10
Comentarii

Respins pentru că nici măcar nu ai încercat să citești documentația. get_page() este depreciat

Pieter Goosen Pieter Goosen
6 ian. 2016 09:27:38