Создание темы для WordPress. Часть 3. Вывод постов
Доброго времени суток. Сегодня мы с Вами продолжаем создавать собственную тему для 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 выглядела более привлекательно).
Если у Вас возникли вопросы, то пишите в комментариях. Я обязательно на них отвечу. А пока все. Всем удачной разработки.
[…] мы с Вами не рассмотрим все теги. Как Вы уже заметили в уроке 3, когда мы добавили вывод постов к нашей теме для WordPress […]
[…] поста. Тег должен использоваться внутри механизма The Loop. Если необходимо получить данные для дальнейшей […]
[…] Эта функция должна находиться внутри механизма The Loop. Если Вам необходимо не отобразить e-mail автора […]
[…] ссылку на пост. Используется внутри механизма The Loop. Для того, чтобы получить ссылку на пост по его […]
[…] на следующий пост. Используется внутри механизма The Loop. Принимает следующие […]
некорректный код, приходилось скачивать пример (в примере рабочий)
[…] функция, которая создает несколько петель (механизмов the_loop). Данная функция извлекает список записей по […]
Проблема в том, что не идёт переход по ссылке the_permalink, ничего не меняется остаётся на этой же странице. Как можно решить эту проблему?
the_permalink должна находиться внутри цикла the Loop.
Пример использования
в теге a href=»»> название и закрываем тег а
нет ссылки на пример :( не могли бы вы перезалить?
Обновил ссылки
ура! спасибо!
Код в статье написан не корректно, так и не увидел где мы в ней используем функцию the_permalink . В связи с тем, что исходники не скачиваются сложно все понять.
подскажите как вывести определённое количество последних записей, обходя настройки вордресс?
if ( have_posts() ) :
query_posts(‘posts_per_page = 100’);
while (have_posts()) :
…
endwhile;
wp_reset_query();
endif;
Ничего не выходит, вот код который у меня. Подправь пожалуйста, если можно, что бы я принцип понял.
php if(have_posts()) :
php while(have_posts()) : the_post();
<figure <a href=" php the_permalink(); " php the_post_thumbnail(); a
<a href="»>
я ж написал, код:
if ( have_posts() ) :
query_posts(‘posts_per_page = 100’);
while (have_posts()) : the_post()
endwhile;
wp_reset_query();
endif;
Вот мой код. Поправь пожалуйста, что бы я мог понять принцип.
изображения не отображаются что ли?
Ку
Если данный файл существует, то отображение отдельного поста будет происходить как описано в файле single.php. Если же файла с именем single.php нет, то отображение отдельного поста будет происходить как описано в index.php.
двойная запись, видимо с первого раза не дошло, надо пару раз прописать :D
прямо как у меня !