Главная
Wordpress
Вывод случайных записей WordPress c миниатюрами без плагина
  • 25 Мар 2014г
  • 5214
  • 7
  • Рубрика: Wordpress

Вывод случайных записей WordPress c миниатюрами без плагина

Иногда владельцы WordPress сталкиваются с тем что им нужно вывести случайные записи на своем сайте. К тому же данная затея является очень полезной вещью, потому что поможет вам создать внутреннюю перелинковку страниц, что хорошо с точки зрения оптимизация для выдачи в поисковых системах. Так же поможет показать посетителям те посты, которые были созданы давно и давно не обсуждались, хотя могут быть очень полезными для посетителя.
Для выполнения такой задачи нам поможет функция WordPress - query_posts. Данная функция позволяет выводить записи согласно заданным критериям, например только из определенной категории или вообще только определенные записи.
Итак, нам нужно открыть файл темы(sidebar.php, single.php и тд.) - куда нам нужно вставить наш код функции, который выглядит так.

 
<?php query_posts('orderby=rand&showposts=5'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
   <ul>
     <li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
   </ul>
<?php endwhile; endif; ?>

В данном коде в первой строке указаны свойства: вывод случайным образом и вывод 5 постов.

Ниже предлагаю список всех свойств данной функции, чтобы вы смогли более подробно настроить случайный вывод записей.

query_posts(‘cat=-3′) — Не показывать категорию с id=3;
query_posts(‘cat=-1,-2,-3′) — Не показывать категории с id, равным 1, 2 и 3;
query_posts(‘cat=1,5,9′) — Вывести категории с id, равным 1, 5 и 9;
query_posts(‘category_name=Статьи’) — Вывести категорию с названием «Статьи»;
query_posts(‘name=Возможности WordPress’) — Вывести запись с названием «Возможности WordPress»;
query_posts(‘p=12′) — Вывести одну запись, id которой равно 12;
query_posts(‘pageid=8′) — Вывести одну страницу, id которой равно 8;
query_posts(‘pagename=Об авторе’) — Вывести страницу, название которой «Об авторе»;
query_posts(‘cat=3&showposts=5′) — Вывести 5 записей из категории, id которой равно 3;
query_posts(‘cat=3&orderby=date&order=ASC’) — Вывести записи из категории, id которой равен 3 по дате в хронологическом порядке, т.е выше будут располагаться записи, которые были созданы последними. Если вам надо вывести записи в обратном порядке, то нужно применить параметр DESC;
query_posts(‘posts_per_page=10′) — Вывести на страницу 10 записей. Если задать значение ‘-1′, то будут выводиться все записи;
query_posts(‘cat=3&year=2010′) — Вывести записи из категории, id которой равен 3, за 2010 год;
query_posts(‘orderby=rand&showposts=5&cat=3′) — Вывести случайно 5 записей из категории, id которой равен 3;
query_posts(‘orderby=rand&showposts=5′) - Вывести случайно 5 записей из всех категорий;
query_posts(‘meta_key=cars&meta_value=volvo’) — Вывести список записей с произвольным полем «cars» и значением этого поля «volvo».

Также можно в этот можно код добавить показ миниатюр.
нужно добавить 1 строку после строки с именем поста, но перед закрывающимся li.

 <a title="<?php the_title(); ?>" href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>

Тогда код будет выглядеть следующим образом.

<?php query_posts('orderby=rand&showposts=10'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
   <ul>
     <li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
         <a title="<?php the_title(); ?>" href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a></li>
   </ul>
<?php endwhile; endif; ?>

Используя метод как в ЭТОЙ статье, можно подключить стили. Также можете прописать свои, чтобы придать нормальное отображение данного списка записей.

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

Вот код, который нужно вставить в конец нашего functions.php:

  
<?php
function randomPosts() {
query_posts('orderby=rand&showposts=5');
if (have_posts()) : while (have_posts()) : the_post(); ?>
   <ul>
     <li><a title="<?php the_title(); ?>" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
   </ul>
<?php endwhile; endif;
}
?>

Теперь для того чтобы вывести список случайных записей, в нужном месте просто вставить следующий код:

<?php randomPosts(); ?>

После сохранения файлов - смотрим результат.
На этом все. Спасибо за внимание 🙂




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


Оцените статью
  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(24 голоса, в среднем: 4.7 из 5)

Опубликовано 7 комментариев

  • Den4ik
    Комментариев: 1

    Благодаря вашему скрипту который выводит вот это Г:

    "Не будь редиской. Укажи источник 🙂 http://gnatkovsky.com.ua/vyvod-sluchajnyx-zapisej-wordpress-c-miniatyurami-bez-plagina.html"

    Ваш блог стал бесполезным, ведь скопировать код wordpress теперь нельзя. Удачи.

    • Виталий
      Комментариев: 269

      А если щелкнуть по коду двойным щелчком, то он выделится и его можно скопировать без так званого Вами - Г. 🙂

  • Алексей
    Комментариев: 1

    Здравствуйте, помогите решить проблемку. Вообщем сделал я так как описано здесь, все прекрасно работает, но проблема вот в чем. У меня на сайте есть вывод новостей в двух местах: выше - превью новостей в случайном порядке, ниже - превью от самых свежих к старым, стандартный вывод. Но теперь то у меня новости в этих двух местах на странице выводятся в разном порядке. И кстати, вывод превью в разном порядке я так же засунул в single.php, может в этом моя ошибка? Будьте любезны ответить, жду! 🙂

    • Виталий
      Комментариев: 269

      Алексей, попробуйте вместо цикла из этой статьи query_posts использовать WP_Query
      Параметры типа orderby, cat, или showposts и тд у них одинаковые. У Вас получится, что-то типа этого:
      <?php $the_query = new WP_Query(orderby=rand&showposts=5); ?>
      <?php while ($the_query->have_posts() ) : $the_query->the_post(); ?>
      //Тут будет вывод миниатюр иль заголовков и тд.
      <?php endwhile; ?>
      <?php wp_reset_postdata();?>

      Его можно сразу вставить в single.php Ну или унемного подправить и засунуть в функцию как query_posts, чтобы вызвать из functions.php.
      Причем можете на WP_Query заменить и свой старый цикл с нормальным порядком. Просто в скобках убрать orderby=rand. Несколько WP_Query могут жить на одной странице, а вот query_posts создают конфликт.

      • Елена
        Комментариев: 1

        Виталий, интересно - использую ваш код - все работает. Но где внести изменения чтобы показывались посты из определенной id категории? Спасибо!

        • Виталий
          Комментариев: 269

          Вам больше эта статья подойдет - http://gnatkovsky.com.ua/vyvod-zapisej-na-glavnoj-iz-opredelennyx-rubrik-v-wordpress.html

        • Виталий
          Комментариев: 269

          Там используется query_posts – это отлично если меняется обычный цикл. Если вы хотите вывести записи из определенных рубрик, например в сайдбаре или под статьями и тд, то луччше использовать WP_Query

          В первой строке задаем категорию с айди, например один - cat=1
          И говорим что показывать нужно 5 записей - showposts=5

          В 3 строке – заглавие
          4 – текст
          5- кнопка редактировать

          Вместо 3,4,5 можете добавлять что угодно что касается записи, например тизер миниатюра и тд.
          <?php $the_query = new WP_Query('cat=1& showposts=5'); ?>
          <?php while ($the_query->have_posts() ) : $the_query->the_post(); ?>
          <h1><?php the_title(); ?></h1>
          <?php the_content(); ?>
          <?php edit_post_link(__('Редактировать')); ?>
          <?php endwhile; ?>
          <?php wp_reset_postdata();?>

Добавить комментарий

Заполните поля ниже. Ваш e-mail не будет опубликован. Обязательные поля помечены *

Уважаемые пользователи! При добавлении комментариев на сайт Вам следует соблюдать правила указанные под формой отправки комментариев.

Соблюдайте добавления комментариев

Это не спам *

Нажмите, чтобы добавить код в комментарий