Obtener el contenido de una página específica (por ID)
Tengo la siguiente plantilla de página principal creada:
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?
<?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 );
?>

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.

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

$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/

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;

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

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.
