Эффективная передача переменных в шаблон WordPress
Одной из проблем, с которой сталкиваются разработчики тем или плагинов get_template_part
, является невозможность передачи переменных в загруженный шаблон WordPress. Однако существует альтернатива с использованием locate_template
.
Обзор
В этом примере мы собираемся отобразить три записи Easy Digital Download. Я использую EDD уже некоторое время, и хотя у него много функций, он все еще удивительно легкий.
Мы будем извлекать записи и сохранять их в переменной $edd_download
. Затем мы загрузим шаблон WordPress, передав переменную. На самом деле передать переменную — значит сказать слишком много: мы просто загрузим шаблон таким образом, чтобы $edd_download
переменная имела правильную область действия для использования в загруженном шаблоне.
Загрузка шаблона WordPress
Этот код можно поместить в функцию. Затем вы можете подключить эту функцию к области вашей темы с помощью хука действия или просто вызвать функцию как тег шаблона. В своих темах я использую хуки, чтобы пользователи могли позже добавлять или удалять контент. Это все, что нам нужно для кода:
Код шаблона
Теперь нам нужен файл шаблона WordPress. Если вы заметили вызов выше, locate_template
он ожидает найти файл download-home.php
в каталоге parts
внутри папки темы.
Мы всегда должны помнить о вызове wp_reset_postdata()
после цикла foreach, если мы вызвали setup_postdata()
.
Заключительные слова
Итак, после всего этого, почему это полезно? потому что пользователи могут создать шаблон в дочерней теме и легко переопределить исходный шаблон. Все делается для того, чтобы облегчить жизнь вашим пользователям. Конечно, этого также можно добиться с помощью фильтров или создания подключаемых функций, но некоторые пользователи могут счесть редактирование шаблона, ориентированного на одну задачу, более чистым подходом, чем работать с файлом с множеством функций для нескольких разных и несвязанных задач.