Страница настроек с бесплатной версией Advanced Custom Fields

black and white audio controller close-up photo

В предыдущей заметке я разобрал как и зачем создавать страницу настроек с помощью Advanced Custom Fields Pro. Но что делать если в наличии только бесплатная версия плагина? Давайте узнаем.

Дисклеймер

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

Шаг 1. Создаем страницу

Создаем и публикуем новую страницу и называем ее «Настройки сайта». В адресной строке находим ID созданной страницы и запоминаем его, он пригодится позже.

В нашем случае ID страницы равно 34

Шаг 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. И, в третьих, платное решение более отказоустойчиво, так как не сломается при удалении страницы или устновки темы на другой сайт (правда данные придется вводить по-новой).

Добавить комментарий

Ваш адрес email не будет опубликован.