Как получить контент конкретной страницы в WordPress

17 авг. 2013 г., 18:05:42
Просмотры: 16.9K
Голосов: 1

Ниже мой код, который работает, но проблема в том, что он не выводит HTML-теги... такие как и т.д... не понимаю почему...

<?php $recent = new WP_Query("page_id=2"); while($recent->have_posts()) : $recent->the_post();?>
    <?php 
    echo substr(get_the_excerpt(), 0,450); // Выводим первые 450 символов краткого описания
     ?>
     <a href="<?php the_permalink() ?>" rel="bookmark">
             Подробнее о нас
              </a>

Ниже другой код, где HTML-теги и все остальное работает правильно... но я не могу понять, как сделать там рабочую постоянную ссылку... та ссылка, которую я вставил, не работает.

<?php
$my_id = 2;
$page_id = get_post($my_id);
$content = $page_id->post_content; // Получаем контент страницы
echo substr($content, 0, 450); // Выводим первые 450 символов
?>
  <a href="<?php the_permalink() ?>" >Подробнее о нас</a>

Также, какой лучший способ получить контент конкретной страницы, как показано ниже:

<h2>заголовок</h2>
<div>изображение записи </div>
<div>контент</div>
<a href="<?php the_permalink() ?>" rel="bookmark">
0
Все ответы на вопрос 2
2

Вместо вызова WP_Query() можно использовать get_post() и "настроить" global $post. Это, вероятно, немного эффективнее, чем ответ @tf, хотя идеи в целом схожи.

Обратите внимание: в обоих случаях следует сбросить данные поста после использования.

/**
 * Отображает содержимое поста. Дополнительно позволяет передать ID поста.
 * @uses the_content()
 *
 * @param int $id Необязательный. ID поста.
 * @param string $more_link_text Необязательный. Текст для ссылки "Читать далее".
 * @param bool $stripteaser Необязательный. Удалять тизер перед текстом "Читать далее". По умолчанию false.
 */
function sh_the_content_by_id( $post_id=0, $more_link_text = null, $stripteaser = false ){
    global $post;
    $post = &get_post($post_id);
    setup_postdata( $post, $more_link_text, $stripteaser );
    the_content();
    wp_reset_postdata();
}

Источник: http://stephenharris.info/get-post-content-by-id/

17 авг. 2013 г. 18:47:11
Комментарии

Что ж, логика не моя - я просто взял то, что было в вопросе, и немного улучшил. ;) Если речь идет всего об одном посте, который вас интересует, вы, конечно, правы - лучше использовать get_post. Однако, поскольку изначально там был цикл, я оставил его как есть.

tfrommen tfrommen
17 авг. 2013 г. 18:53:10

ссылка битая

Jon Jon
23 апр. 2021 г. 14:46:35
0

(get_)the_excerpt() удаляет HTML-теги — именно поэтому у вас нет HTML-тегов. ;)

Просто используйте the_content() вместо the_excerpt(), если хотите отобразить полное содержимое.

$recent = new WP_Query("page_id=2");
while ($recent->have_posts()) : $recent->the_post();
    echo '<a href="'.get_the_permalink().'" rel="bookmark">Постоянная ссылка</a>';
    the_content();
endwhile;
wp_reset_postdata();

Что касается наилучшего способа вывода данных записи, вам стоит взглянуть сюда.

17 авг. 2013 г. 18:33:06