Пользовательские поля WordPress
Доброго времени. Очень часто в WordPress нам не хватает дополнительных полей. Например, при лендинге мы хотим из админки менять номер телефона. И многие за помощью отправляются к плагином. А ведь WordPress обладает встроенным функционалом создания пользовательских полей. Дальше мы рассмотрим, как создать пользовательское поле в WordPress, как отобразить его в теме WordPress, а также рассмотрим несколько хитростей для работы с дополнительными полями.
Первое, что нужно понять: Что же такое пользовательские поля в WordPress.
Что такое пользовательские поля WordPress?
Пользовательские поля WordPress представляют собой метаданные, которые используются для добавления дополнительной информации, относящейся к сообщению или странице, например, номер телефона, имя автора, дата / время и т. д.
По умолчанию, когда вы пишете новое сообщение, страницу или любой тип контента, WordPress сохраняет его в две разные области. Первая часть — это тело вашего контента, которое вы добавляете с помощью редактора сообщений.
Вторая часть — это информация об этом конкретном контенте. Например, название, автор, дата, время и т. д. Эта информация и называется метаданными.
WordPress автоматически добавляет все необходимые метаданные к каждому сообщению или странице, которую вы создаете. WordPress также позволяет пользователям сохранять свои собственные метаданные с помощью настраиваемых полей.
По умолчанию опция настраиваемых полей скрыта на экране редактирования сообщений. Чтобы просмотреть его, вам нужно нажать кнопку «Параметры экрана» вверху.
А затем включить опцию настраиваемых полей.
Теперь мы увидим область «Произвольные поля» под редактором:
Добавление пользовательских полей в WordPress
Для добавления пользовательского поля необходимо выбрать из списка или нажать «Введите новое» и добавить новое имя поля. Затем добавить значение этого поля.
Замечание: Имя поля должно быть написано латиницей. Это ключ, по которому в дальнейшем мы будем получать значение данного поля.
После необходимо нажать «Добавить произвольное поле» и обновить или опубликовать наше сообщение.
Мы с вами добавили кастомное поле. Теперь при добавлении нового сообщения (страница, запись в блог) мы уже из списка можем выбрать данное поле.
Но наше поле не отображается.
Отображение пользовательских полей в WordPress
Чтобы отобразить пользовательское поле на сайте, нам нужно отредактировать файлы темы WordPress.
Если Вы не знаете, как выводятся посты в WordPress, то прочтите статью на этом блоге «Создание темы для WordPress. Часть 3. Вывод постов»
Теперь внутрь цикла:
<?php while ( have_posts() ) : the_post(); ?> … <?php endwhile; // end of the loop. ?>
Нужно вставить следующий код:
<?php echo get_post_meta($post->ID, 'key', true); ?>
Где key – это имя нашего поля. В моем случае:
echo "Phone: ".get_post_meta($post->ID, 'phone', true);
Давайте посмотрим, что получилось
Наше поле отображается.
Теперь давайте рассмотрим несколько хитростей работы с пользовательскими полями.
Скрыть пустые пользовательские поля
Если дополнительное поле пустое, то давайте его скроем. Для этого необходимо добавить следующий код:
<?php $phone = get_post_meta($post->ID, 'phone', true); if ($phone) { ?> <p>Телефон: <? echo $phone; ?></p> <?php } else { // do nothing; } ?>
Помните, ключ phone заменяем на название поля.
Добавление нескольких значений в пользовательское поле
Дополнительные поля могут использоваться несколько раз в одной и той же записи. Чтобы добавить несколько значений поля нужно снова выбрать его и добавить другое значение.
Однако код, в приведенных выше примерах, сможет отображать только одно значение.
Чтобы отобразить все значения настраиваемого поля, нам нужно изменить код и заставить его возвращать данные в массиве. Для этого меняем код:
<?php $phone = get_post_meta($post->ID, 'phone', false); if( count( $phone) != 0 ) { ?> <p>Телефон:</p> <ul> <?php foreach($phone as $p) { echo '<li>'.$p.'</li>'; } ?> </ul> <?php } else { // do nothing; } ?>
Ключ phone меняем на название поля.
В этом примере мы изменили последний параметр функции get_post_meta на false. Этот параметр определяет, должна ли функция возвращать одно значение или нет. Установка его в значение false позволяет вернуть данные в виде массива, который затем отображается в цикле foreach.
Отображать пользовательские поля за пределами цикла в WordPress
Чтобы отобразить пользовательские поля вне цикла WordPress, добавьте следующий код:
<?php global $wp_query; $postid = $wp_query->post->ID; echo get_post_meta($postid, 'key', true); wp_reset_query(); ?>
Вот и все.
Заключение.
Мы с вами рассмотрели:
- как в WordPress можно добавлять свои поля
- как отображать дополнительные поля в теме WordPress
- как скрыть кастомное поле, если оно пустое
- как добавить и отобразить несколько значений пользовательских полей
- как отображать свои поля за пределом цикла loop