Освойте цикл WordPress

Автор: John Stephens
Дата создания: 23 Январь 2021
Дата обновления: 17 Май 2024
Anonim
Урок 5. Вывод постов | Курс по WordPress | Академия вёрстки
Видео: Урок 5. Вывод постов | Курс по WordPress | Академия вёрстки

Содержание

  • Необходимые знания: Средний уровень PHP, базовый CSS, базовый WordPress
  • Требует: WordPress
  • Время проекта: 1-2 часа

Как разработчику WordPress вам нужно понять несколько вещей. Такие вещи, как темы и плагины, действия и фильтры, теги и многое другое. Но ничто из этого не является более важным, чем всемирно известный цикл WordPress.

О, петля. Это живая, дышащая штука. Это основа WordPress - та часть, которая заставляет все работать. Без The Loop не было бы динамического контента (во всяком случае, очень небольшого). Используя The Loop, мы можем распечатать любой контент в любом желаемом формате. И кто лучше его создателей описать? Вот что об этом говорится в Кодексе WordPress:

Цикл используется WordPress для отображения каждой из ваших публикаций. Используя цикл, WordPress обрабатывает каждую из публикаций, отображаемых на текущей странице, и форматирует их в соответствии с тем, как они соответствуют указанным критериям в тегах цикла. Любой код HTML или PHP, помещенный в цикл, будет повторяться в каждом посте.


По сути, WordPress имеет набор тегов, чтобы: (а) убедиться, что у нас есть сообщения для отображения, и (б) отобразить эти сообщения. Теги, называемые шаблонными тегами, позволяют нам полностью настраивать способ отображения информации из каждого сообщения.

01. Начало работы

Мы начинаем цикл следующим образом:

? php if (have_posts ()): в то время как (have_posts ()): the_post (); ?> var13 ->

Здесь происходят три вещи:

  • have_posts () проверяет наличие сообщений для отображения.
  • Эта же функция будет постоянно отслеживать, есть ли у нас сообщения, поэтому она используется как условие while.
  • the_post () распаковывает следующий пост в очереди.

WordPress автоматически захватывает сообщения, запрашивая базу данных по URL-адресу. Вы также можете перезаписать исходный запрос, используя WP_Query () или же query_posts () чтобы получить собственную информацию. В любом случае, если этот запрос возвращает сообщения, have_posts () возвращает истину, и мы входим в цикл. Мы заканчиваем Цикл таким образом:


? php end while; еще:?> var13 ->
? php _e («Сообщения не найдены. Извините!»); ?> var13 ->
? php endif; ?> var13 ->

У нас есть простой запасной вариант: в случае, если have_posts () возвращает false, это говорит пользователю, что у нас нет для них сообщений. Внутри цикла мы можем делать все, что угодно, чтобы полностью настроить отображение постов. Я не буду подробно останавливаться на всех тегах шаблонов, но укажу на некоторые из наиболее часто используемых. Все следующие функции по умолчанию распечатывают свои значения. Некоторые из этих функций также принимают логические значения, которые определяют, следует ли выводить значение на печать или возвращать.

  • the_title (): Получает заголовок сообщения или страницы. Он принимает три аргумента: HTML-тег перед заголовком (с именем $ до), HTML-тег после заголовка (с именем $ после) и $эхо, собственно название.
  • время(): Получает дату публикации сообщения или страницы. Единственный аргумент, который он принимает, - это формат, в котором должна быть напечатана дата. Это те же аргументы, которые принимает функция даты PHP. По умолчанию все, что указано в панели администратора WordPress, в разделе «Настройки»> «Общие».
  • содержание(): Это отобразит содержимое записи или страницы (то есть все, что вы ввели в качестве основного текста в визуальном редакторе администратора WordPress. Он принимает два аргумента, первый из которых сообщает WordPress, что отображать как текст «больше». . Я подробно расскажу об этом в следующем разделе. Второй аргумент, называемый $ стриптизёрша, просто задокументирован как логическое значение, которое «удаляет содержание тизера перед текстом 'more'». В Кодексе нет примеров, и есть некоторые споры о том, что он на самом деле делает.
  • the_excerpt (): Получает первые 55 слов сообщения, добавляя [...] в конец строки. Он не принимает никаких аргументов. И количество слов, и многоточие можно изменить в файле функций с помощью фильтров.
  • тhe_category (): Получает категорию (или категории), в которых перечислены сообщения. В качестве аргументов он принимает разделитель, который будет напечатан между категориями; как обрабатывать отображение родительских категорий; и post_id, который, конечно же, по умолчанию соответствует текущему сообщению.
  • the_tags (): Получает теги, добавленные к сообщению. Он принимает аргументы: что печатать перед списком тегов, как разделять каждый тег и что печатать после каждого тега.
  • the_permalink (): Получает URL-адрес публикации или страницы в формате, определенном панелью администратора WordPress в разделе «Настройки»> «Постоянные ссылки».
  • Автор(): Здесь отображается имя автора сообщения. Вы также можете использовать the_author_link (), который будет отображать имя автора со ссылкой на другие его сообщения. Если вы все же используете последнее, я бы порекомендовал вам сделать хотя бы author.php страницу, чтобы сообщения отображались красиво!

Также стоит отметить, что большинство этих функций имеют сопутствующие функции 'get', то есть get_the_title () - который просто вернет значение вместо его печати. Здесь вы можете увидеть все теги шаблона, а также указать, принадлежат ли они The Loop или нет.

Теперь я знаю, о чем вы думаете: этот животрепещущий вопрос ...


02. Где я могу использовать The Loop?

И это очень хороший вопрос. Хотя теоретически вы можете использовать The Loop где угодно, есть несколько мест, где он обычно используется. Первое и, наверное, самое очевидное место занимает index.php. Поскольку индексная страница по умолчанию является шаблоном домашней страницы вашего блога, The Loop используется для отображения самых последних сообщений блога. Другими распространенными шаблонами, в которых вы увидите The Loop, являются single.php а также page.php.

Однако прелесть WordPress в том, что вы можете перезаписать практически любую функцию по умолчанию. Это означает, что если вы хотите иметь настраиваемое отображение для определенной категории, вы можете создать категория- $ id.php шаблон (где $ id - идентификатор категории; слизняк также можно использовать) и бросить The Loop на эту страницу, чтобы получить собственный шаблон только для этой категории. Если у вас нет других шаблонов, index.php будет использовано. В WordPress Codex на самом деле есть очень хорошая диаграмма, показывающая детализацию шаблонов тем, все из которых являются общими местами для использования The Loop, которые вы можете просмотреть здесь.

Конечно, вам не нужно использовать его в одном из этих стандартных шаблонов. Вы можете использовать The Loop где угодно, если у вас есть подходящие крючки - просто wp_head (); - на месте. Если вы хотите сделать что-то вроде отображения миниатюры самого последнего сообщения на боковой панели, вы тоже можете это сделать. Я собираюсь показать вам, как отображать заголовок «последних новостей» и ссылку на статью в заголовке.

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

? php
query_posts (’posts_per_page = 1 & category_name = последние новости’);
если (есть_посты ()): в то время как (есть_посты ()): the_post ();
?> var13 ->

div>
h3> BREAKING: a href = "? php the_permalink ();?>">? php the_title (); > / а> / h3>
/ div>

? php end while; endif; wp_reset_query (); ?> var13 ->

Здесь следует отметить несколько моментов. Прежде всего, мы используем встроенную функцию query_posts () чтобы получать сообщения, отличные от тех, которые обычно появляются на странице. Согласно нашему запросу, нам нужно одно сообщение (самое последнее) из категории «горячие новости», которая является кратким обозначением категории, которую я создал для этой демонстрации. Вы можете использовать любой ярлык категории, который хотите: просто помните, что если вы хотите вызвать категорию по ярлыку, вам нужно category_name в строке запроса. (Просто используя категория требуется идентификатор категории.) Вы можете узнать больше о query_posts () здесь.

Следует иметь в виду, что query_posts () изменяет основной цикл. Я покажу вам, как это исправить, а позже расскажу о других функциях, которые вы могли бы использовать, которые не изменят основной цикл.

После того, как мы получим нужные сообщения, мы начинаем цикл, как обсуждалось ранее:

? php if (have_posts ()): в то время как (have_posts ()): the_post (); ?> var13 ->

Затем мы вызываем два тега шаблона, the_permalink () а также the_title (), заключив их в div с созданным мной классом под названием .breaking. Наш цикл заканчивается обычным образом конец пока; endif;

Однако я добавил еще одну функцию: wp_reset_query (). Вы можете прочитать об этом здесь.

Обязательно вызовите эту функцию сразу после окончания пользовательского цикла, потому что она сбросит запрос, захватывая информацию, которая должна быть на странице. Например, если пользователь переходит на страницу «О нас», wp_reset_query () захватит информацию с этой страницы, которая была перезаписана query_posts () звонок, который мы только что сделали. Без него никакие последующие петли не будут отображаться должным образом; и поскольку этот код находится в заголовке, любые циклы для шаблона этой страницы будут бесполезны. Коротко, wp_reset_query () очень важно.

Вот результат:

03. Могу ли я использовать более одного цикла в шаблоне?

Еще один отличный вопрос! Короткий ответ - да, определенно. Вы, вероятно, видели это в действии на таких сайтах, как CNN, National Geographic и Forbes, каждый из которых использует несколько циклов на своей домашней странице (или, по крайней мере, так выглядит). Фактически, в нашем последнем примере мы использовали более одного цикла для шаблона, даже если эти два цикла находились в разных файлах. Просто имейте в виду, что, когда вы используете несколько циклов, вам нужно помнить о том, где и как вы их используете, а также о масштабах тегов вашего шаблона.

04. Запрос сообщений

Ранее я упоминал, что есть несколько способов создать список сообщений для отображения в вашей теме. Первый (и основной) способ - использовать функцию query_ posts (), который мы использовали в нашем предыдущем примере.Это основной метод, потому что именно так WordPress генерирует исходную информацию о записи или странице, когда вы переходите в раздел сайта WordPress. Следовательно, когда вы используете query_posts (), это изменит основную информацию цикла.

Это означает, что если мы сделаем что-то подобное ...

? php the_title (); ?> var13 ->
? php query_post ($ someArguments); ?> var13 ->
? php the_title (); ?> var13 ->

... мы получим два разных названия. Из-за этого мы хотим не забывать об использовании query_posts (), особенно когда мы создаем несколько разных циклов в одном шаблоне. Лучшим вариантом может быть get_posts (), что позволяет нам создавать несколько циклов в одном шаблоне без изменения основного запроса страницы. (Вы можете найти больше информации здесь.) Единственное отличие состоит в том, что нам придется настроить наш цикл немного по-другому.

Вот пример кода:

? php
$ custom_posts = get_posts (array (’numberposts’ => 4, ’category’
=> 3, orderby => ’title’));
foreach ($ custom_posts как $ custom_post): setup_postdata ($ custom_post); ?> var13 ->
h3>? php the_title (); ?> var13 -> / h3>
? php the_excerpt (); ?> var13 ->
? php endforeach; ?> var13 ->
?> var13 ->

Здесь нужно помнить о нескольких вещах. Во-первых, очевидно, что это не обычная настройка цикла, которую мы писали. Это потому, что эта строка:

? php if (have_posts ()): в то время как (have_posts ()): the_post (); ?> var13 ->

... зарезервирован для всего, что извлекается из query_posts (), который обычно является информацией по умолчанию для страницы. Вместо, get_posts () вернет массив сообщений, которые мы храним в нашей собственной переменной, которую мы будем просматривать с помощью для каждого петля.

Чтобы использовать обычные теги шаблонов, которые мы теперь знаем и любим, мы вызываем функцию setup_postdata (), передав ему информацию о текущем посте (которая теперь находится в переменной $ custom_post). Затем мы действуем как обычно, используя все обычные теги шаблона.

А также есть WP_Query, который является классом, используемым для запроса сообщений, создания цикла и т. д. Хотя об этом стоит упомянуть здесь и проверить Кодекс, я не буду вдаваться в подробности, так как у нас уже есть два способа получить информацию о публикации, что будет нормально в девяти случаях из десяти. В WP_Query На странице кодекса есть все параметры, которые вы можете передать в строке запроса для сообщений, независимо от того, используете ли вы WP_Query, query_posts () или же get_posts ().

05. Заключение

И это все для этой статьи. Уф! Мы рассмотрели здесь довольно много вопросов, и это может показаться немного ошеломляющим, если вы только начинаете, но проявите настойчивость, и вскоре вы начнете продуктивно работать с хлебом с маслом WordPress: The Loop!

Вы можете узнать больше о The Loop и создании тем WordPress, плагинов и пользовательских типов сообщений в моей новой книге, Создание тем WordPress с нуля.

Джо Касабона - веб-разработчик, преподаватель и автор книги «Создание тем WordPress с нуля». Он безумно любит WordPress и непростительно зануд!

Самые читаемые
5 студенческих проектов, взбудораживших в 2017
Читать

5 студенческих проектов, взбудораживших в 2017

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

Как рисовать акриловыми красками

Чтобы научиться рисовать и раскрашивать, нужно время, знания и терпение. Но есть ряд техник рисования и искусства, которые вы можете использовать, чтобы помочь вам на этом пути. Акрил - очень гибкий м...
22 лучших инструмента для дизайна пользовательского интерфейса
Читать

22 лучших инструмента для дизайна пользовательского интерфейса

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