Как получить заголовок, анонс, миниатюру и постоянную ссылку произвольного типа записи по ID?

14 апр. 2015 г., 00:52:06
Просмотры: 17.3K
Голосов: 0

Мне нужно сгенерировать несколько "циклов" для получения заголовка, анонса, миниатюры и постоянной ссылки произвольного типа записи 'charity' по ID поста, потому что у меня будет несколько записей (благотворительных организаций), которые мне нужно связать с определенным классом (абсолютно позиционированные указатели на карте).

Можете помочь исправить мой код, чтобы он работал? Вот что у меня есть (не работает):

<span id="chty_17">
<?php
$args = array('post_type'=> 'charity','post__in' => array(36));
$custom_query = get_posts($args);
foreach ($custom_query as $post) :
setup_postdata($post); ?>
<dt><?php the_title; ?></dt>
<dd>
<?php echo get_the_post_thumbnail(); ?>
<h2><?php the_title; ?></h2>
<p><?php the_excerpt; ?></p>
<p><a class="more" href="<?php echo get_post_permalink();?>">Find out more &raquo;</a></p></dd>
<?php endforeach;
wp_reset_postdata();?>
</span>

Этот код отображает только миниатюру и постоянную ссылку правильно.

Я пробовал другие варианты, как показано ниже, но мне нужно получить сгенерированный анонс записи, а не её содержимое:

<?php $post_17 = get_post(17); ?>
<dt><?php echo $post_17->post_title; ?></dt>
<dd>
<?php echo get_the_post_thumbnail('17'); ?>
<h2><?php echo $post_17->post_title; ?></h2>
<p><?php echo $post_17->post_content; ?></p>
<p><a class="more" href="<?php echo get_post_permalink('17');?>">Find out more &raquo;</a></p></dd>

Как этого добиться? Спасибо!!

2
Комментарии

вы пропустили () при вызовах функций - the_title(), the_excerpt()

Milo Milo
14 апр. 2015 г. 01:09:51

Используйте get_the_excerpt() для получения только текста с меньшим форматированием - должно использоваться внутри Loop.

Nicolai Grossherr Nicolai Grossherr
14 апр. 2015 г. 01:11:56
Все ответы на вопрос 1
0

Вы почти у цели. Есть несколько вещей, которые можно сделать иначе, чтобы получить лучший результат и одновременно извлечь анонс записи.

Мы будем использовать setup_postdata, чтобы иметь возможность использовать такие функции как the_title() и the_excerpt(). После завершения извлечения и отображения этого контента всегда нужно вернуться к исходному состоянию, поэтому вызываем wp_reset_postdata(), чтобы вернуться к предыдущему контенту.

<?php
$post_17 = get_post(17);
if ( $post_17 ):
    setup_postdata($post_17);
    ?>
    <span id="chty_17">
        <dt><?php the_title(); ?></dt>
        <dd>
            <?php the_post_thumbnail(); ?>
            <h2><?php the_title(); ?></h2>
            <?php the_excerpt(); ?>
            <p><a class="more" href="<?php the_permalink();?>">Узнать больше &raquo;</a></p>
        </dd>
    </span>
    <?php
    wp_reset_postdata();
endif;
?>

Важно отметить, что the_excerpt() добавляет ссылку "more" в конец анонса. Использование приведенного выше кода приведет к выводу двух ссылок "more". Вы можете изменить содержимое этой ссылки с помощью фильтра get_the_excerpt.

16 февр. 2016 г. 00:32:59