В предыдущей заметке я разобрал как и зачем создавать страницу настроек с помощью Advanced Custom Fields Pro. Но что делать если в наличии только бесплатная версия плагина? Давайте узнаем.
Дисклеймер
В данной заметке я исхожу из того, что вы уже знакомы с плагином Advanced Custom Fields, понимаете его интерфейс, знаете как работать с группами и полями. И, главное, плагин установлен на вашем сайте.
Шаг 1. Создаем страницу
Создаем и публикуем новую страницу и называем ее «Настройки сайта». В адресной строке находим ID созданной страницы и запоминаем его, он пригодится позже.
Шаг 2. Создаем группу полей
Для этого перейдем в главном меню админ-панели Группы полей > Добавить и создадим новую группу. По аналогии с предыдущей заметкой создаем 3 поля: site_logo, site_phone, site_email, содержание этих полей позже будем выводить в шапке сайта.
Условие отображения группы привязываем к конкретной странице: «Настройка сайта».
Шаг 3. Заполняем поля
Возвращаемся к редактированию нашей страницы и заполняем поля:
Шаг 4. Редактируем файлы темы
Чтобы вывести динамические данные за пределами контента нам придется отредактировать файлы шаблона. Какие именно файлы нужно редактировать — тема для отдельной серии уроков. Поэтому сосредоточимся на коде, который позволит вывести значение acf-поля в любом месте шаблона.
Чтобы вывести номер телефона, который мы сохранили на странице Настройки сайта нам нужно передать в функцию the_field два параметра название поля и id страницы, получим: <?php the_field('site_phone', 34); ?>
Наличие числа 34 в параметре функции допустимо, но не является хорошей практикой. Удаление страницы или перенос темы на другой сайт сломает вывод данных. Да и со временем вы забудете, или если код будет смотреть другой программист — будет непонятно, что это за число и откуда оно взялось.
Если в коде такое число нужно использовать более одного раза, сохраните это значение в переменную c говорящим названием и обязательно оставьте комментарий:
<?php $setting_page_id = 34; //ID страницы с настройками ?>
<?php the_field('site_phone',$setting_page_id); ?>
Заключение
Имеется несколько различий между предложенным решением и страницей настроек, созданной с помощью ACF PRO. Во-первых ACF-PRO автоматически создает отдельный пункт в главном меню админ-панели. Во-вторых ACF Pro сохраняет поля в таблицу Options сайта и оптимизирует их загрузку, а в бесплатной версии данные сохраняются в таблицу Post Meta. И, в третьих, платное решение более отказоустойчиво, так как не сломается при удалении страницы или устновки темы на другой сайт (правда данные придется вводить по-новой).