Получить содержимое определенной страницы (по ID)

4 июн. 2013 г., 16:51:53
Просмотры: 177K
Голосов: 22

У меня есть следующий шаблон главной страницы:

изображение шаблона главной страницы

Вместо этих больших блоков Lorem Ipsum, мне нужно показать "отрывок" с определенной страницы, чтобы заполнить этот блок (определенное количество символов).

Как мне получить содержимое страницы в формате строки, чтобы я мог вывести его и обрезать до определенного количества символов?

0
Все ответы на вопрос 9
1
34
<?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 );

?>
4 июн. 2013 г. 17:06:20
Комментарии

Если ваш код не сработал для меня, то вот рабочий вариант, который может помочь другим - $post_info = get_post( 24 ); $content = $post_info->post_content; echo $content;

Jon Jon
23 апр. 2021 г. 15:33:13
5
24

Вот готовый код!

<?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 нояб. 2015 г. 10:13:15
Комментарии

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

cybmeta cybmeta
16 нояб. 2015 г. 10:16:16

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

Mohammad Mursaleen Mohammad Mursaleen
4 мая 2016 г. 10:48:17

Работает прекрасно!

Charles Xavier Charles Xavier
20 июл. 2019 г. 00:11:19

Что делает функция str_replace?

netAction netAction
30 апр. 2020 г. 19:34:10

Для чего используется $content = str_replace(']]>', ']]>', $content);?

Sridhar Katakam Sridhar Katakam
22 окт. 2020 г. 03:34:02
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/

17 мар. 2018 г. 15:18:42
Комментарии

Это самый лаконичный ответ. Мне нравится.

aronmoshe_m aronmoshe_m
6 июл. 2021 г. 05:57:42
1

Вы можете использовать этот код, он работает корректно. Замените 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;?>
27 дек. 2014 г. 11:13:18
Комментарии

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

cybmeta cybmeta
27 дек. 2014 г. 19:07:18
0

Если вы находитесь внутри цикла, сделайте следующее:

<?php
$my_excerpt = get_the_excerpt();
if ( $my_excerpt != '' ) {
    // Выполняем манипуляции со строкой
}
echo $my_excerpt; // Выводим обработанное значение на страницу

Или если у вас есть ID, получите запись и используйте переменную-член post_excerpt

Например:

$post = get_post( $post_id );
echo $post->post_excerpt;
4 июн. 2013 г. 17:05:11
0

Попробуйте этот код, просто измените ваш 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; ?>
7 февр. 2018 г. 09:37:59
0

Для любителей однострочников вроде меня. Замените 69 на ID вашей страницы.

<?= apply_filters('the_content', get_post(69)->post_content); ?>
6 февр. 2020 г. 21:38:19
0

Можно сделать это с помощью шорткода. Добавьте следующий код в файл 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 абзаца, так что функционал универсален.

2 окт. 2020 г. 14:16:57
0

Уже был ответ, но я думаю, что гораздо удобнее использовать функцию get_post_field( 'fieldname', $post_id );

Так что в вашем случае:

echo get_post_field( 'post_excerpt', $post_id );
13 февр. 2021 г. 13:54:02