Последние записи на статической главной странице

12 февр. 2013 г., 11:41:49
Просмотры: 23.6K
Голосов: 1

Я хочу сделать статическую главную страницу на моем сайте WordPress. Я уже настроил это и добавил некоторый контент, следующий шаг - я хочу отобразить 5 последних записей под основным содержимым. На обычной странице это не проблема, но как только я устанавливаю страницу как статическую главную, записи исчезают.

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

Надеюсь, это не слишком сложно для понимания, и я действительно ценю любую помощь. Я занимаюсь этим уже 2 дня без какого-либо прогресса. Я могу предоставить любой необходимый код из шаблонов или что-либо еще.

Мой сайт - www.completemuscleandfitness.com

Вот что у меня есть на данный момент

<?php
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );

foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Просмотреть '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> ';
}       

который показывает это - www.completemuscleandfitness.com

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

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

Если вы можете предоставить код, почему бы вам не сделать это?

Max Yudin Max Yudin
12 февр. 2013 г. 11:54:39

Я пытаюсь, но, кажется, он не отображается, я использую paste bin. Вот что у меня есть на данный момент - http://pastebin.com/Qq08Z3Fp

user27348 user27348
12 февр. 2013 г. 12:47:12

Я уже отредактировал ваш вопрос, и он ожидает проверки. Смотрите Форматирование кода.

Max Yudin Max Yudin
12 февр. 2013 г. 12:51:03

Извините, наверное, звучит глупо! Что такое peer review?

user27348 user27348
12 февр. 2013 г. 12:57:31
Все ответы на вопрос 3
3

Для начала, добро пожаловать!

Я предполагаю, что вы используете файл front-page.php для отображения главной страницы.
Вам нужно добавить следующий код в ваш front-page.php:

<h2>Последние записи</h2>
<ul>
<?php
    $args = array( 'numberposts' => '5' );
    $recent_posts = wp_get_recent_posts( $args );

    foreach( $recent_posts as $recent ){
        echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Посмотреть '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> ';
    }
?>
</ul>

Подробнее о функции wp_get_recent_posts() можно узнать здесь.

Ваш файл шаблона будет выглядеть примерно так:

<div id="main">
    <div class="new_post">
        ...
    </div>                                  
</div>

Вы можете попробовать вставить этот код внутрь <div id="main"> прямо перед закрывающим тегом </div>:

<div id="main">
    <div class="new_post">
        ...
    </div>
    <h2>Последние записи</h2>
    <ul>
    <?php
        $args = array( 'numberposts' => '5' );
        $recent_posts = wp_get_recent_posts( $args );

        foreach( $recent_posts as $recent ){
            echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Посмотреть '.esc_attr($recent["post_title"]).'" >' .   $recent["post_title"].'</a> </li> ';
        }
    ?>
    </ul>                               
</div>
12 февр. 2013 г. 11:59:12
Комментарии

Спасибо за ответ! Так как у меня статическая главная страница, я сейчас использую шаблон под названием page-home-2.php. Могу ли я добавить код туда? Сложность для меня в том, чтобы понять, куда именно в шаблоне нужно вставить код?

user27348 user27348
12 февр. 2013 г. 12:10:32

Вы можете добавить код в файл page-home-2.php. Я дополню свой ответ, добавив краткое описание, куда именно нужно поместить этот код.

Mike Madern Mike Madern
12 февр. 2013 г. 12:16:03

Майк, не мог бы ты помочь мне дальше?

user27348 user27348
12 февр. 2013 г. 16:53:54
20

Вы можете создать свой собственный шаблон домашней страницы, аналогичный файлу index.php в директории вашей активной темы.

Внутри этого файла вы можете создать собственный запрос и перебирать результаты.

Например:

<h2>Недавние записи</h2>
<ul>
<?php
    $query = new WP_Query( array ( 'orderby' => 'date', 'order' => 'DESC' ) );

    while ( $query->have_posts() ) :
    $query->the_post();
    echo '<li>' . get_the_title() . '</li>';
endwhile;
?>
</ul>

Это можно рассматривать как пример реализации. Вы можете развивать его по мере необходимости.

Например:

    <?php 

// Запрос
$the_query = new WP_Query( $args );

// Цикл
while ( $the_query->have_posts() ) :
    $the_query->the_post();
    echo '<li>' . get_the_title() . '</li>';
endwhile;

/* Восстановление оригинальных данных поста 
 * Примечание: Поскольку мы используем new WP_Query, мы не перезаписываем 
 * оригинальный $wp_query, и его не нужно сбрасывать.
*/
wp_reset_postdata();


/* Второй запрос (без глобальной переменной) */
$query2 = new WP_Query( $args2 );

// Второй цикл
while( $query2->have_posts() ):
    $query2->next_post();
    echo '<li>' . get_the_title( $query2->post->ID ) . '</li>';
endwhile;

// Восстановление оригинальных данных поста
wp_reset_postdata();

 ?>

Вы можете получить больше информации здесь. А для работы с множественными параметрами запроса обратитесь к этому.

12 февр. 2013 г. 12:12:52
Комментарии

Спасибо за помощь, я только что вставил первый код в свой index.php, чтобы создать пользовательский шаблон. Теперь у меня отображаются последние записи, но без ссылок, и они просто в виде небольшого списка над моим контентом. Как сделать так, чтобы записи отображались так же, как на других страницах блога, например вот так - http://completemuscleandfitness.com/index.php/training/

user27348 user27348
12 февр. 2013 г. 12:31:37

Это полностью зависит от DOM-структуры вашей текущей темы. То есть от того, как написана логика отображения через PHP и HTML. Например, вы можете просто скопировать и вставить всю логику отображения записей в ваш пользовательский цикл вместо оператора echo '<li>' . get_the_title() . '</li>'; и убрать обёртку ul вокруг этого. Надеюсь, это поможет.

Rohit Pande Rohit Pande
12 февр. 2013 г. 12:40:09

Получаю много информации, очень признателен. Вроде понимаю, о чём вы говорите. Думаю, именно здесь я упираюсь в стену. Раньше у меня получалось выводить последние записи, но не могу разобраться с их правильным отображением. Просто не могу это осознать. Если я размещу шаблон блога другой темы, кто-нибудь сможет помочь на его основе?

user27348 user27348
12 февр. 2013 г. 12:51:37

Я не совсем понимаю, что вы пытаетесь сказать. Не могли бы вы объяснить подробнее?

Rohit Pande Rohit Pande
12 февр. 2013 г. 12:57:08

Хорошо, я могу вывести последние записи на моей статической странице, но они отображаются неаккуратно. Вероятно, мне нужно вставить какой-то код в мою пользовательскую страницу, чтобы записи отображались в стандартном формате темы. Я просто не знаю, какой код нужно вставить и куда, возможно, этот код можно взять из другого шаблона темы? Я спрашиваю: если я опубликую шаблон темы, сможете ли вы помочь мне разместить код там, где это необходимо?

user27348 user27348
12 февр. 2013 г. 13:04:03

Конечно! Давай, дружище.

Rohit Pande Rohit Pande
12 февр. 2013 г. 13:05:12

Спасибо! Вот что у меня есть на данный момент в моем кастомном шаблоне, это показывает посты, но без форматирования - http://pastebin.com/Qq08Z3Fp Следующее - это шаблон блога из моей темы - http://pastebin.com/uJyfbEeg

user27348 user27348
12 февр. 2013 г. 13:08:48

Я модифицировал код и вот ссылка http://pastebin.com/ubhyxpJV. Просто сделайте бэкап вашего текущего файла шаблона и вставьте весь этот код, и, думаю, все должно заработать.

Rohit Pande Rohit Pande
12 февр. 2013 г. 13:15:23

Спасибо за ваши усилия, Rohit, я вставил код в мой кастомный шаблон и активировал его, но последние посты не отображаются на моей главной странице?

user27348 user27348
12 февр. 2013 г. 13:19:04

Я внес некоторые правки. Посмотрите вот это http://pastebin.com/QrcBXW0N. Попробуйте заменить текущий код этим и проверьте.

Rohit Pande Rohit Pande
12 февр. 2013 г. 13:22:56

Мы на правильном пути! Теперь отображаются последние записи, почти так как должно быть, но они зацикливаются, поэтому показываются 3 записи непрерывно. Также исчезло оригинальное содержимое страницы. Еще раз, не могу выразить, как я ценю вашу помощь.

user27348 user27348
12 февр. 2013 г. 13:28:04

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

Rohit Pande Rohit Pande
12 февр. 2013 г. 13:35:30

Хорошо, спасибо, я попробую. Последний вопрос: есть идеи, как мне снова отобразить остальной контент? Сейчас посты занимают всё пространство.

user27348 user27348
12 февр. 2013 г. 13:37:49

Конечно. Просто добавь эту строку <?php get_template_part('home'); ?> после <?php /* Template Name: Custom Homepage */ ?> и, скорее всего, всё заработает. Попробуй, и если не сработает, укажи мне код твоего файла home.php в директории активной темы. Проверь, существует ли этот файл. Если нет, попробуй выяснить, какой шаблон загружается для строки кода, которую я предложил.

Rohit Pande Rohit Pande
12 февр. 2013 г. 13:42:11

Теперь контент отображается, но как отдельная страница, что довольно странно - www.completemuscleandfitness.com Вот код шаблона - http://pastebin.com/3xDU9w3R и мой home.php - http://pastebin.com/XELee582

user27348 user27348
12 февр. 2013 г. 13:52:11

То же, что и в предыдущем шаге — сделайте резервную копию файла и попробуйте заменить код на этот, а затем проверьте.

Rohit Pande Rohit Pande
12 февр. 2013 г. 13:58:09

То же, что и раньше, но метаданные в футере исчезли. Простите за такие сложности...

user27348 user27348
12 февр. 2013 г. 14:01:06

У вас проблема со структурой DOM. Я вижу часть футера. Просто проверьте правильность структуры DOM, и, думаю, это решит проблему.

Rohit Pande Rohit Pande
12 февр. 2013 г. 14:04:57

Я бесполезен, я даже не знаю, как проверить структуру DOM...

user27348 user27348
12 февр. 2013 г. 14:14:26

Удалось ли вам что-то сделать? Изменили ли вы страницу, как хотели? Если нужна помощь, не стесняйтесь спрашивать.

Rohit Pande Rohit Pande
13 февр. 2013 г. 08:29:35
Показать остальные 15 комментариев
0

Если я ничего не упускаю, мне кажется, что вы все слишком усложняете.

На мой взгляд, виджета "последние записи" должно быть вполне достаточно.

Пример:

http://wordpresstest.hjcs.org

Раздел "Последние новости" - это как раз виджет "последние записи".

(Этот сайт еще в разработке - поэтому у меня в поддомене указано "test").

12 февр. 2013 г. 19:14:54