Получить содержимое определенной страницы (по ID)
У меня есть следующий шаблон главной страницы:
Вместо этих больших блоков Lorem Ipsum, мне нужно показать "отрывок" с определенной страницы, чтобы заполнить этот блок (определенное количество символов).
Как мне получить содержимое страницы в формате строки, чтобы я мог вывести его и обрезать до определенного количества символов?
<?php
// выведет содержимое записи с ID 7 до тега <!--more-->
$post_7 = get_post(7);
$excerpt = $post_7->post_excerpt;
echo $excerpt;
// получит полное содержимое записи с ID 12, после чего
// вы можете обработать его по своему усмотрению
$post_12 = get_post(12);
$trim_me = $post_12->post_content;
my_trim_function( $trim_me );
?>

Пожалуйста, объясните, что делает этот код и как он отвечает на вопрос. Некоторые пользователи могут не понять код без небольшого пояснения.

Мне очень нравится, как вы добавили фильтр the_content
. +1 за это.

// Получаем пост с ID 42
$post = get_post( 42 );
// Применяем фильтры контента к содержимому поста
$output = apply_filters( 'the_content', $post->post_content );
// Выводим обработанный контент
echo $output;
из https://developer.wordpress.org/reference/functions/get_post/

Вы можете использовать этот код, он работает корректно. Замените page_id=19 на ID вашей страницы:
<?php $the_query = new WP_Query( 'page_id=19' ); ?>
<?php while ($the_query -> have_posts()) : $the_query -> the_post(); ?>
<?php the_excerpt(); ?>
<?php endwhile;?>

Если вы находитесь внутри цикла, сделайте следующее:
<?php
$my_excerpt = get_the_excerpt();
if ( $my_excerpt != '' ) {
// Выполняем манипуляции со строкой
}
echo $my_excerpt; // Выводим обработанное значение на страницу
Или если у вас есть ID, получите запись и используйте переменную-член post_excerpt
Например:
$post = get_post( $post_id );
echo $post->post_excerpt;

Попробуйте этот код, просто измените ваш 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">Читать далее</a>
</div>
<?php endwhile; ?>

Можно сделать это с помощью шорткода. Добавьте следующий код в файл 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');
Для вывода в контенте используйте:
[lorem repeat="2"]
Просто замените текст "Lorem ipsum dolor ........." на нужную вам длину. А параметр repeat=2 измените на необходимое количество абзацев. В приведенном примере =2 означает 2 абзаца, так что функционал универсален.
