Ottenere il contenuto di una pagina specifica (tramite ID)

4 giu 2013, 16:51:53
Visualizzazioni: 177K
Voti: 22

Ho creato il seguente template per la front-page:

esempio di layout della front-page

Al posto di quei grandi blocchi di Lorem Ipsum, ho bisogno di mostrare un "estratto" da una pagina specifica per riempire quella casella (un certo numero di caratteri).

Come posso ottenere il contenuto di una pagina in formato String in modo da poterlo visualizzare con echo e ridurlo a un certo numero di caratteri?

0
Tutte le risposte alla domanda 9
1
34
<?php

// visualizzerà il contenuto del post 7 fino al tag <!--more-->
$post_7 = get_post(7); 
$excerpt = $post_7->post_excerpt;
echo $excerpt;

// otterrà l'intero contenuto del post 12 dopo il quale potrai
// manipolarlo con le tue preferenze di troncamento
$post_12 = get_post(12); 
$trim_me = $post_12->post_content;
my_trim_function( $trim_me );

?>
4 giu 2013 17:06:20
Commenti

basato sul tuo codice che non ha funzionato per me, ho ottenuto questo che funziona se può essere utile a qualcuno - $post_info = get_post( 24 ); $content = $post_info->post_content; echo $content;

Jon Jon
23 apr 2021 15:33:13
5
24

Ecco qui!

<?php
$my_id = 5369;
$post_id_5369 = get_post($my_id);
$content = $post_id_5369->post_content;
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
echo $content;
?>
16 nov 2015 10:13:15
Commenti

Per favore, spiega cosa fa il codice e come risponde alla domanda. Alcuni utenti potrebbero non capire il codice senza una piccola spiegazione.

cybmeta cybmeta
16 nov 2015 10:16:16

Mi piace molto il modo in cui hai aggiunto il filtro the_content. +1 per quello.

Mohammad Mursaleen Mohammad Mursaleen
4 mag 2016 10:48:17

Funziona perfettamente!

Charles Xavier Charles Xavier
20 lug 2019 00:11:19

Cosa fa str_replace?

netAction netAction
30 apr 2020 19:34:10

A cosa serve $content = str_replace(']]>', ']]>', $content);?

Sridhar Katakam Sridhar Katakam
22 ott 2020 03:34:02
1
$post   = get_post( 42 );

$output =  apply_filters( 'the_content', $post->post_content );

echo $output;

da https://developer.wordpress.org/reference/functions/get_post/

17 mar 2018 15:18:42
Commenti

Questa è la risposta meno verbosa. La adoro.

aronmoshe_m aronmoshe_m
6 lug 2021 05:57:42
1

puoi usare questo codice, funziona bene sostituisci page_id=19 con il numero della tua pagina:

<?php $the_query = new WP_Query( 'page_id=19' ); ?>

<?php while ($the_query -> have_posts()) : $the_query -> the_post();  ?>

                       <?php the_excerpt(); ?>


     <?php endwhile;?>
27 dic 2014 11:13:18
Commenti

Benvenuto su questo sito. Sembra che questa sia la tua prima risposta. Una spiegazione del perché e di come la tua risposta risolve il problema è sempre utile.

cybmeta cybmeta
27 dic 2014 19:07:18
0

Se sei all'interno del loop fai questo:

<?php
$my_excerpt = get_the_excerpt();
if ( $my_excerpt != '' ) {
    // Viene eseguita qualche manipolazione di stringa
}
echo $my_excerpt; // Restituisce il valore elaborato alla pagina

Oppure se hai un ID, ottieni il post e poi usa la variabile membro post_excerpt

Esempio:

$post = get_post( $post_id );
echo $post->post_excerpt;
4 giu 2013 17:05:11
0

Prova questo codice e cambia semplicemente il tuo page_id:

<?php $my_query = new WP_Query('page_id=20');
while ($my_query->have_posts()) : $my_query->the_post();
$do_not_duplicate = $post->ID;?>
 <h3><?php the_title(); ?></h3>
    <div class="text">

        <?php echo wp_trim_words( get_the_content(), 15, '...' ); ?>
 <a href="<?php echo get_page_link(); ?>" class="read-more">Leggi di più</a>
    </div>

 <?php endwhile; ?>
7 feb 2018 09:37:59
0

Per gli amanti delle one liner come me. Sostituisci 69 con l'ID della tua pagina.

<?= apply_filters('the_content', get_post(69)->post_content); ?>
6 feb 2020 21:38:19
0

Puoi farlo con uno shortcode. Aggiungi il seguente codice a function.php

function lorem_func($attr) {
$txt = "<p>Lorem ipsum dolor .........</p>";
shortcode_atts(
 array(
    'repeat' => 1,
 ), $attr
);
return str_repeat($txt, $attr['repeat'] );
}
add_shortcode('lorem', 'lorem_func');

Per renderizzarlo all'interno del contenuto usa:

[lorem repeat="2"]

Basta modificare il testo "Lorem ipsum dolor ........." con la lunghezza desiderata. E il parametro repeat=2 può essere cambiato con la quantità di paragrafi richiesta. Nell'esempio sopra riportato, =2 significa 2 paragrafi, quindi è multifunzionale.

2 ott 2020 14:16:57
0

Già risposto ma penso che una funzione molto più pratica sia get_post_field( 'fieldname', $post_id );

Quindi nel tuo caso:

echo get_post_field( 'post_excerpt', $post_id );
13 feb 2021 13:54:02