Создание темы для WordPress. Часть 3. Вывод постов

Ромчик
21

Создание своей темы для WordPressДоброго времени суток. Сегодня мы с Вами продолжаем создавать собственную тему для WordPress. На прошлом уроке мы с Вами создали тему из html шаблона. Но пока наша тема ничего не отображает. А  в этом уроке мы с Вами сделаем вывод постов в теме для WordPress. И разберем основные функции для вывода проверки и вывода постов фреймверка WordPress. Если Вы готовы, тогда давайте приступим…

Если Вы пропустили предыдущие уроки, то я рекомендую Вам скачать нашу тему для WordPress, которую мы создали на прошлом уроке. На базе материала прошлого урока мы и продолжим создавать тему для WordPress.

Проверка наличия постов

Для проверки наличия постов на ресурсе в WordPress используется функция have_posts(). Данная функия не принимает не каких параметрово. Возвращает булево значение, т.е. true, когда посты есть и false, когда постов нет.
Давайте применим данную функцию в нашей теме. Откроем файл index.php и изменим код на следующий:

 <?php get_header() ?>
<div id="content">
<div id="center">
<?php if ( have_posts() ) :
 echo "<b>Content</b>";
 else :
 echo "Sorry, no posts were found";
 endif;
 ?></div>
</div>
 <?php get_sidebar() ?>
 <?php get_footer() ?>

Проверим. Если у Вас есть стать, то появиться надпись Content, если постов нет, то появиться — “Sorry, no posts were found”

Вывод постов.

Для отображения постов в WordPress используется механизм The Loop. The Loop — это цикл, который служит для отображения всех постов существующих на данной странице. Также механизм служит для форматирования отображения поста в соответствии с Вашой темой. Пример механизма The Loop:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
…
<?php endif; ?>

Для отображения постов мы и будем применять механизм The Loop. В посте мы будем отображать заголовок поста, сам контент, автора, дату публикации и категорию. Ну чтож, тогда изменим наш index.php следующим образом:

 <?php get_header() ?>
<div id="content">
<div id="center">
                <?php                     if ( have_posts() ) :                         while ( have_posts() ) : the_post(); ?>
<div>
<h2></h2>
<?php the_content() ?>

<?php the_author() ?>:<?php the_date() ?>:<?php the_category() ?></div>
                    <?php endwhile;?>
                    <?php else :                         echo "Sorry, no posts were found";                     endif;                     ?></div>
<?php get_sidebar() ?>
<?php get_footer() ?>

Тут мы использовали следующие функции:

  • the_permalink — ссылка на текущий пост;
  • the_title — для отображения заголовка поста;
  • the_content — для отображения  контента поста;
  • the_author — для отображения автора поста;
  • the_date — для отображения даты публикации поста;
  • the_category — для отображения категорий данного поста.

Основные функции WordPress, которые могут понадобиться в отображении постов я опишу в дополнении к данному уроку. Давайте проверим, что у на получилось. Теперь создаваемая нами тема для WordPress выводит посты. (да, пока это выглядит не красиво, но путем добавления стилей мы можем сделать отображение постов так, как нам это необходимо)
Вывод отдельного поста.
Для отображения отдельного поста в WordPress есть файл single.php. Когда мы открываем отдельный пост, то WordPress ищет в теме файл c названием single.php. Если данный файл существует, то отображение отдельного поста будет происходить как описано в файле single.php. Если же файла с именем single.php нет, то отображение отдельного поста будет происходить как описано в index.php.
Давайте в корневой папке нашей темы мы создадим файл с названием single.php. Теперь мы хотим сделать, чтобы заголовок поста не являлся ссылкой, на данной странице отображались комментарии и была навигация на предыдущий пост/следующий пост. Для этого добавим в файл single.php следующий код:

<?php get_header() ?>
<div id="content">
<div id="center">
                <?php                     if ( have_posts() ) :                         while ( have_posts() ) : the_post(); ?>
<div>
<h2></h2>
<?php the_content() ?>

<?php the_author() ?>:<?php the_date() ?>:<?php the_category() ?></div>
<div>                               <?php comments_template() ?></div>
<div>
</div>
                    <?php endwhile;?>
                    <?php else :                         echo "Sorry, no posts were found";                     endif;                     ?></div>
<?php get_sidebar() ?>
<?php get_footer() ?>

В данном коде мы использовали следующие функции:

  • comments_template — используется для загрузки шаблона комментариев. Данная функция может принимать два значения $file и $separate_comments. $file — служит для указания имени шаблона комментариев (по умолчанию comments.php), а второй $separate_comments — служит для отделения комментариев (по умолчанию false)
  • previous_post_link() — эта функция выводит ссылку на предыдущий пост. Данная функция должна использоваться в механизме The Loop. Может принимать следующие параметры $format, $link, $in_same_cat = false, $excluded_categories = », где $format — в данным параметром мы устанавливаем формат ссылки (по умолчанию <<%link, те будет стоять <<[ссылка на предыдущий пост]), $link — текст ссылки (по умолчанию %title, т.е. название поста), $in_same_cat = false — данный параметр указывает на, то что предыдущий пост должен быть из той же категории (по умолчанию flase, т.е. отображается предыдущий пост даже, если он не из той категории), $excluded_categories = » — ставяться ID категорий из которых не указывать посты (по умолчанию пусто);
  • next_post_link() — эта функция выводит ссылку на следующий пост. Принимает параметры аналогичные параметрам функции previous_post_link().

Сохраним и проверим.
На этом данный урок посвященный созданию собственной темы для WordPress я завершаю. На следующих уроках мы продолжим создавать тему для WordPress, а частности поговорим о создании отдельного шаблона страницы (page). Так, что не пропускайте выхода новых материалов, подписавшись на рассылку данного блога.
Скачать исходник данного урока Вы можете по этой ссылке. (в исходнике я немного изменил верстку и стили для того, чтобы наша тема для WordPress выглядела более привлекательно).
Если у Вас возникли вопросы, то пишите в комментариях. Я обязательно на них отвечу. А пока все. Всем удачной разработки.

Понравилась статья? Поделись с друзьями.
  • Add to favorites
  • Добавить ВКонтакте заметку об этой странице
  • Twitter
  • Facebook
  • Мой Мир
  • LiveJournal
  • Одноклассники
  • Блог Я.ру
  • MySpace
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • Reddit
  • StumbleUpon
  • Technorati
  • del.icio.us
  • БобрДобр
  • LinkedIn
  • Memori.ru
  • Сто закладок
  • Blogger

  • Теги шаблонов WordPress. Основные теги | Все о WEB программировании - 27.02.2012 в 23:41

    […] мы с Вами не рассмотрим все теги. Как Вы уже заметили в уроке 3, когда мы добавили вывод постов к нашей теме для WordPress […]

  • Теги для работы с автором (авторами) постов WordPress | Все о WEB программировании - 01.03.2012 в 21:43

    […] поста. Тег должен использоваться внутри механизма The Loop. Если необходимо получить данные для дальнейшей […]

  • Теги для работы с комментариями WordPress | Все о WEB программировании - 06.03.2012 в 13:20

    […] Эта функция должна находиться внутри механизма The Loop. Если Вам необходимо не отобразить e-mail автора […]

  • Теги для работы с ссылками в WordPress | Все о WEB программировании - 11.03.2012 в 11:42

    […] ссылку на пост. Используется внутри механизма The Loop. Для того, чтобы получить ссылку на пост по его […]

  • Теги для работы с постами в WordPress. | Все о WEB программировании - 20.03.2012 в 15:18

    […] на следующий пост. Используется внутри механизма The Loop. Принимает следующие […]

  • Михаил Мазаев - 11.08.2012 в 08:46

    некорректный код, приходилось скачивать пример (в примере рабочий)

  • Как отобразить случайные сообщения в WordPress | Все о WEB программировании - 06.09.2012 в 21:48

    […] функция, которая создает несколько петель (механизмов the_loop).  Данная функция извлекает список записей по […]

  • Юрий - 19.12.2012 в 00:56

    Проблема в том, что не идёт переход по ссылке the_permalink, ничего не меняется остаётся на этой же странице. Как можно решить эту проблему?

    • Roman - 19.12.2012 в 13:11

      the_permalink должна находиться внутри цикла the Loop.

      Пример использования

      в теге a href=»»> название и закрываем тег а

  • Дарья - 20.07.2013 в 19:24

    нет ссылки на пример :( не могли бы вы перезалить?

    • Roman - 21.07.2013 в 17:55

      Обновил ссылки

    • Дарья - 21.07.2013 в 17:57

      ура! спасибо!

  • MART - 13.02.2014 в 00:04

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

  • Алексей Просвет - 19.06.2014 в 23:04

    подскажите как вывести определённое количество последних записей, обходя настройки вордресс?

    • Roman - 20.06.2014 в 06:39

      if ( have_posts() ) :
      query_posts(‘posts_per_page = 100’);
      while (have_posts()) :

      endwhile;
      wp_reset_query();
      endif;

    • Алексей Просвет - 20.06.2014 в 16:23

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

      php if(have_posts()) :
      php while(have_posts()) : the_post();
      <figure <a href=" php the_permalink(); " php the_post_thumbnail(); a

      <a href="»>

    • Roman - 23.06.2014 в 06:05

      я ж написал, код:

      if ( have_posts() ) :
      query_posts(‘posts_per_page = 100’);
      while (have_posts()) : the_post()

      endwhile;
      wp_reset_query();
      endif;

    • Алексей Просвет - 20.06.2014 в 16:41

      Вот мой код. Поправь пожалуйста, что бы я мог понять принцип.

    • Алексей Просвет - 20.06.2014 в 16:42

      изображения не отображаются что ли?

    • Алексей Просвет - 20.06.2014 в 17:03

      Ку

  • YVSIK - 28.12.2014 в 01:29

    Если данный файл существует, то отображение отдельного поста будет происходить как описано в файле single.php. Если же файла с именем single.php нет, то отображение отдельного поста будет происходить как описано в index.php.

    двойная запись, видимо с первого раза не дошло, надо пару раз прописать :D
    прямо как у меня !

  • ©2012-2017 По всем вопросам обращайтесь через форму обратной связи

    Яндекс.Метрика