ГлавнаяWordpressАвторские Функции → Функция для вывода последних записей в WordPress

Функция для вывода последних записей в WordPress

Комментариев: 109Функция для вывода последних записей в WordPress
  • Ребята подскажите. Есть основной сайт на WP. Но хочу сделать так чтоб при заходе на сайт подгружалась страница навигации, т.е. на сам сайт на wp а просто index.html, где будут блоки и др. информация.
    Встал вопрос. Каким образом подключить блок последних новостей в количестве 5 штук в блок в этот самый index.html
    Пример чего хочу на этом сайте http://dance4life.focus-media.ru/ в левой колонке. Вот таким видом.
    Плиз очень нужно. Подкиньте идейку)))))

    ОТВЕТИТЬ ↓
    • Вам нужно в папку с темой добавить файл home.php (кодировку не забудьте поставить utf-8 with BOM)

      потом в этот файл вставите код из index.php ну и вместо стандартного loop'a напишите туда функцию)

      я для этого пользуюсь циклом WP get_post помоему меньше строк нужно писать, да и проще)

      ОТВЕТИТЬ ↓
  • Здравствуйте, Тимур. Вопрос у меня такой:
    Как можно исключить отображение в скрипте постов, которые уже отображаются на странице стандартным выводом? То есть, на главной последние посты отображаются и в сайдбаре с помощью вашего скрипта тоже. Как избежать дублей?
    ЗЫ код сайдбара идет раньше.

    ОТВЕТИТЬ ↓
    • Собрать ID постов, которые отображаются раньше и исключить их из кода, что позже. Как это будет выглядеть в коде - зависит от конкретного кода... Точнее сказать не могу. *pardon*

      ОТВЕТИТЬ ↓
      • Ну это необходимо будет делать после каждой новой записи...Так, чтоб автоматизировать этот процесс - нельзя?

        ОТВЕТИТЬ ↓
        • Конечно нет! В коде автоматом собирать надо в массив ID первого цикла, и в других циклах вывода исключать эти собранные ID. Я не предлагал указывать ID постов числами, вы что... *shok*

          ОТВЕТИТЬ ↓
          • Я неправильно понял, значит. Ну если на конкретном примере взять. Как решить поставленную задачу если код примерно таков (без лишего):

            <?php get_sidebar() ?>
            
            <?php if( have_posts() ){ while( have_posts() ){ the_post(); ?>
            
            	<div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
            		<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
            		<?php the_content(); ?>
            	</div>
            
            <?php }
            
            	<div class="navigation">
            		<div class="next-posts"><?php next_posts_link(); ?></div>
            		<div class="prev-posts"><?php previous_posts_link(); ?></div>
            	</div>
            
            <?php
            }
            else
            	echo "<h2>Записей нет.</h2>";
            

            То есть, вначале идет сайдбар(слева), в котором подключен ваш скрипт, далее - обычный цикл(справа). Главная сложность, помимо исключения дублей, думаю, в том, что исключать необходимо сначала в сайдбаре, а отображение в цикле должно быть нетронутым.

            ОТВЕТИТЬ ↓
            • Я все таки не понял, если и тут и там выводятся последние записи, то что их исключать - они ведь все исключаться. Сайт покажите, плз.

              ОТВЕТИТЬ ↓
              • Они все исключатся на главной, где такие же отображаются, а будут отображаться другие, более ранние. А вот на какой-нибудь 100-й странице ведь нет, все будут уникальными. Я думаю, эта опиция вообще должна быть по умолчанию, дубли создавать не комильфо. smile

                ОТВЕТИТЬ ↓
              • Теперь понятно. Согласился с вашим мнением и доработал код функции, теперь она не будет выводить посты, которые уже есть в главном запросе wp_query.

                Технически, добавил такой код в начало, и переменную $AND_NOT_IN в запрос:

                // исключим посты из главного запроса
                foreach( $GLOBALS['wp_query']->posts as $post )
                	$IDs .= $post->ID .',';
                $AND_NOT_IN = ' AND p.ID NOT IN ('. rtrim($IDs, ',') .')';

                Не тестировал, отпишите плз как работает.

                Спасибо за настойчивость и сорри за то, что не отвечал долго, так вот.

                ОТВЕТИТЬ ↓
                • Блестяще работает! Низкий вам поклон. *victory*

                  ОТВЕТИТЬ ↓
  • Добрый день,

    Прежде всего спасибо за полезную информацию.
    Во вторых, хотел спросить вас, что надо изменить для вывода картинок в сайдбар для определенной категории, то есть кроме текста и тайтла новости, также вытягивалась картинка. А именно "Featured image".

    ОТВЕТИТЬ ↓
  • Здравствуйте! Подскажите пожалуйста, в чем может быть причина появления кракозябр после изменения файла function.php ?
    Заранее спасибо!

    ОТВЕТИТЬ ↓
    • Кодировка файла изменилась.

      ОТВЕТИТЬ ↓
Форма комментирования

¤ Вставляйте код кнопкой: "Код" (php, js, html, css, sql);
¤ Выделяйте HTML код кнопкой: "Выделить" (<div>);
¤ Перед отправкой комментария используйте "Превью";
¤ Не пишите спам/бред — бесполезно!

Подписаться на комментарии без комментирования:

X

Забыли пароль?