Obtener el contenido de una página específica (por ID)

4 jun 2013, 16:51:53
Vistas: 177K
Votos: 22

Tengo la siguiente plantilla de página principal creada:

ejemplo de plantilla de página principal de WordPress

En lugar de esos grandes bloques de Lorem Ipsum, necesito mostrar un "extracto" de una página específica para llenar ese recuadro (con un número determinado de caracteres).

¿Cómo puedo obtener el contenido de una página en formato String para poder mostrarlo con echo y recortarlo a un número específico de caracteres?

0
Todas las respuestas a la pregunta 9
1
34
<?php

// mostraría el contenido de la entrada 7 hasta la etiqueta <!--more-->
$post_7 = get_post(7); 
$excerpt = $post_7->post_excerpt;
echo $excerpt;

// obtendría todo el contenido de la entrada 12, después del cual
// puedes manipularlo con tus propias preferencias de recorte
$post_12 = get_post(12); 
$trim_me = $post_12->post_content;
my_trim_function( $trim_me );

?>
4 jun 2013 17:06:20
Comentarios

basado en tu código que no funcionó para mí, obtuve esto funcionando por si le ayuda a alguien - $post_info = get_post( 24 ); $content = $post_info->post_content; echo $content;

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

Aquí tienes !

<?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
Comentarios

Por favor, explica qué hace el código y cómo responde a la pregunta. Algunos usuarios pueden no entender el código sin una pequeña explicación.

cybmeta cybmeta
16 nov 2015 10:16:16

Realmente me gusta la forma en que agregaste el filtro the_content. +1 por eso.

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

¡Funciona perfectamente!

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

¿Qué hace str_replace?

netAction netAction
30 abr 2020 19:34:10

¿Para qué sirve $content = str_replace(']]>', ']]>', $content);?

Sridhar Katakam Sridhar Katakam
22 oct 2020 03:34:02
1
$post   = get_post( 42 ); // Obtiene el post con ID 42

$output =  apply_filters( 'the_content', $post->post_content ); // Aplica filtros al contenido del post

echo $output; // Muestra el contenido procesado

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

17 mar 2018 15:18:42
Comentarios

Esta es la respuesta menos verbosa. Me encanta.

aronmoshe_m aronmoshe_m
6 jul 2021 05:57:42
1

puedes usar este código que funciona bien cambia page_id=19 con el número de tu página:

<?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
Comentarios

Bienvenido a este sitio. Parece que esta es tu primera respuesta. Siempre es bueno incluir una explicación de por qué y cómo tu respuesta resuelve el problema.

cybmeta cybmeta
27 dic 2014 19:07:18
0

Si estás dentro del loop (bucle), haz esto:

<?php
$my_excerpt = get_the_excerpt();
if ( $my_excerpt != '' ) {
    // Se realizó alguna manipulación de cadena
}
echo $my_excerpt; // Muestra el valor procesado en la página

O si tienes un ID, obtén el post y luego usa la variable miembro post_excerpt

Por ejemplo:

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

Prueba este código y solo cambia tu 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">Leer más</a>
    </div>

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

Para adictos a las líneas únicas como yo. Cambia el 69 por el ID de tu página.

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

Puedes hacer esto con un shortcode. Agrega lo siguiente a functions.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');

Para mostrarlo dentro del contenido usa:

[lorem repeat="2"]

Solo necesitas modificar el "Lorem ipsum dolor ........." por el texto del largo requerido. Y el lorem repeat=2 cambiarlo por la cantidad de párrafos necesarios. En el ejemplo anterior =2 significa 2 párrafos, por lo que es multifuncional.

2 oct 2020 14:16:57
0

Ya fue respondido, pero creo que una función mucho más práctica es get_post_field( 'nombre_del_campo', $post_id );

Así que en tu caso:

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