Ottenere il contenuto di un post tramite ID

6 gen 2016, 08:37:49
Visualizzazioni: 61.1K
Voti: 10

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

1
Commenti

Voti negativi perché non hai nemmeno provato a leggere la documentazione su get_page(). È stato deprecato molto tempo fa. Inoltre, ci sono infinite risorse sul sito riguardo a questo problema, persino Google ha tonnellate di informazioni su questo

Pieter Goosen Pieter Goosen
6 gen 2016 09:25:19
Tutte le risposte alla domanda 4
4
19

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.

6 gen 2016 08:58:42
Commenti

Mi chiedo perché stai usando do_shortcode

Pieter Goosen Pieter Goosen
6 gen 2016 09:25:56

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

WPTC-Troop WPTC-Troop
6 gen 2016 09:36:52

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

Pieter Goosen Pieter Goosen
6 gen 2016 09:59:43

Sì, usare apply_filters invece di do_shortcode ha senso. Ma l'uso di apply_filter è basato puramente sulla decisione del loro ambiente. Lasciami aggiornare anche la mia risposta. Grazie mille per la tua attenzione alla comunità @PieterGoosen

WPTC-Troop WPTC-Troop
6 gen 2016 11:04:15
0

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
    )
);
19 nov 2016 12:32:50
1
$id = 23; // aggiungi l'ID della pagina dove si trova lo zero
$p = get_page($id);
$t = $p->post_title;
echo '<h3>'.apply_filters('post_title', $t).'</h3>'; // il titolo è qui avvolto con h3
echo apply_filters('the_content', $p->post_content);
19 gen 2018 08:28:45
Commenti

Per favore [modifica] la tua risposta e aggiungi una spiegazione: perché questa soluzione potrebbe risolvere il problema?

fuxia fuxia
19 gen 2018 08:30:13
1
-1

Utilizzando get_page('ID').

$page_id = 123;  //ID della pagina
$page_data = get_page($page_id); 
$title = $page_data->post_title; 
$content = $page_data->post_content;
6 gen 2016 09:26:10
Commenti

Votato negativamente perché non hai nemmeno provato a leggere la documentazione. get_page() è deprecato

Pieter Goosen Pieter Goosen
6 gen 2016 09:27:38