Как вывести последние записи на главной странице с пользовательским HTML

5 дек. 2011 г., 19:20:27
Просмотры: 15.1K
Голосов: 1

Мне нужно вывести x (пока не определил точное число) последних записей (не более 10) на главной странице. Для каждой записи я хочу отобразить заголовок и отрывок контента. Я могу написать SQL-запрос самостоятельно, но интересуюсь, какая функция WordPress может это сделать. Ближайшее, что я нашел — <?php wp_get_archives('type=postbypost&limit=10&format=html'); ?>. Также мне нужно кастомное форматирование HTML. Пример желаемого вывода:

<div id="posts">
    <section class="post">
        <h2><a href="[post uri]">[post title]</a></h2>
        <p>[post snippet]</p>
    </section>
    <section class="post">
        <h2><a href="[post uri]">[post title]</a></h2>
        <p>[post snippet]</p>
    </section>
</div>
0
Все ответы на вопрос 1
3
<div id="posts">

<?php

    // определяем аргументы запроса
    $args = array(
        'posts_per_page' => 8, // здесь ваше количество постов 'x'
        'nopaging' = true
        // возможно, дополнительные аргументы
    );

    // создаем новый запрос
    $tyler_query = new WP_Query( $args );

    // выводим найденные записи
    while ( $tyler_query->have_posts() ) : $tyler_query->the_post();
        echo '<section class="post">'.
             '<h2><a href="'.
             get_permalink().
             '">'.
             get_the_title().
             '</a></h2><p>'.
             get_the_excerpt().
             '</p></section>';
    endwhile;

    // сбрасываем данные поста
    wp_reset_postdata();

?>

</div>

По умолчанию длина цитаты (excerpt) составляет 55 слов. Для изменения длины добавьте следующий код в файл functions.php вашей темы:

function tyler_excerpt_length( $length ) {
    return 70; // измените количество слов на нужное
}
add_filter( 'excerpt_length', 'tyler_excerpt_length' );

Если вас не устраивает стандартная ссылка "Continue reading" в конце цитаты, добавьте этот код в functions.php:

function tyler_excerpt_more( $more ) {
    return 'Читать полностью &gt;&gt;'; // измените текст на нужный
}
add_filter( 'excerpt_more', 'tyler_excerpt_more' );

Если у вас уже есть ссылка на запись в заголовке и вы хотите убрать ссылку "подробнее" из цитаты, верните пустую строку в функции: return '';.

Дополнительные материалы:

5 дек. 2011 г. 20:03:25
Комментарии

Вау, этот ответ превзошел все мои ожидания. Хотел бы я проголосовать за него много раз. Огромное спасибо.

Tyler Crompton Tyler Crompton
6 дек. 2011 г. 04:29:50

http://codex.wordpress.org/Template_Tags/the_excerpt Вы имели в виду 55 слов?

Tyler Crompton Tyler Crompton
6 дек. 2011 г. 04:33:16

@TylerCrompton Слов! Конечно, о чем я думал. И насколько информативными могут быть 55 символов? Глупо с моей стороны.

Johannes Pille Johannes Pille
6 дек. 2011 г. 13:19:53