Как сделать произвольное поле

Как сделать произвольное поле

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

Для демонстрации возможностей произвольных полей мы рассмотрим способ создания произвольных Title, Description, Keywords и мета-тега Robots для статических страниц и страниц постов WordPress. Кроме того мы также добавим произвольные поля для страниц категорий Wordpess, но для этого нам понадобится специальный плагин под названием Category Fields.

Итак, используя нижеприведенную информацию, вы без проблем сможете по примеру оптимизировать свой сайт для поисковых систем и значительно расширить его функционал за счет использования произвольных полей. При этом можно будет отказаться от многих громоздких плагинов, таких как, например, All in One SEO Pack, который отвечает за создание произвольных заголовков, описаний и ключевых слов в WordPress.

Для того чтобы создать произвольное поле для страницы или поста, переходим в Административную панель WordPress и открываем на редактирование нужную нам страницу. Далее ищем блок «Произвольные поля».

Блок произвольных полей WordPress

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

Включение блока произвольных полей WordPress

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

Создание нового произвольного поля WordPress

После этого можем переходить к выводу данных. Для вывода значений используйте следующий код, который нужно добавить в шаблон сайта WordPress.

<?php echo get_post_meta($post->ID, 'test', true); ?>

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

Создание блока произвольных полей WordPress для статических страниц и постов

Теперь давайте рассмотрим процесс создания блока произвольных полей для статических страниц и постов WordPress. В качестве примера мы добавим произвольные Title, Description и Keywords, а также мета-тег Robots.. Данный код нужно будет добавить в файл functions.php вашей темы оформления WordPress.

// Custom Fields Start // Подключение функции мета-блока my_extra_fields add_action('admin_init', 'my_extra_fields', 1); function my_extra_fields() { add_meta_box( 'extra_fields', 'Дополнительные поля', 'extra_fields_box_func', 'post', 'normal', 'high' ); add_meta_box( 'extra_fields', 'Дополнительные поля', 'extra_fields_box_page_func', 'page', 'normal', 'high' ); } // HTML-код блока для постов function extra_fields_box_func( $post ){ ?> <p> &nbsp;<em>Заголовок страницы (title):</em> <label><input type="text" name="extra[title]" value="<?php echo get_post_meta($post->ID, 'title', 1); ?>" style="width:100%" /></label> </p> <p> &nbsp;<em>Описание страницы (description):</em> <textarea type="text" name="extra[description]" style="width:100%;height:50px;"><?php echo get_post_meta($post->ID, 'description', 1); ?></textarea> </p> <p> &nbsp;<em>Ключевые слова (keywords):</em> <label><input type="text" name="extra[keywords]" value="<?php echo get_post_meta($post->ID, 'keywords', 1); ?>" style="width:100%" /></label> </p> <p> &nbsp;<em>Индексация:&nbsp;</em> <?php $radiobut = get_post_meta($post->ID, 'robots', 1); ?> <label><input type="radio" name="extra[robots]" value="index, follow" <?php checked( $radiobut, 'index, follow' ); ?> /> <em>index, follow</em></label>&nbsp; <label><input type="radio" name="extra[robots]" value="noindex, nofollow" <?php checked( $radiobut, 'noindex, nofollow' ); ?> /> <em>noindex, nofollow</em></label>&nbsp; <label><input type="radio" name="extra[robots]" value="index, nofollow" <?php checked( $radiobut, 'index, nofollow' ); ?> /> <em>index, nofollow</em></label>&nbsp; <label><input type="radio" name="extra[robots]" value="noindex, follow" <?php checked( $radiobut, 'noindex, follow' ); ?> /> <em>noindex, follow</em></label> </p> <p> <strong><em>Index</em></strong> - разрешить индексацию страницы. &nbsp;<strong><em>Follow</em></strong> - разрешить индексацию и переход по ссылкам. </p> <input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" /> <?php } // HTML код блока для статических страниц function extra_fields_box_page_func( $post ){ ?> <p> &nbsp;<em>Заголовок страницы (title):</em> <label><input type="text" name="extra[title]" value="<?php echo get_post_meta($post->ID, 'title', 1); ?>" style="width:100%" /></label> </p> <p> &nbsp;<em>Описание страницы (description):</em> <textarea type="text" name="extra[description]" style="width:100%;height:50px;"><?php echo get_post_meta($post->ID, 'description', 1); ?></textarea> </p> <p> &nbsp;<em>Ключевые слова (keywords):</em> <label><input type="text" name="extra[keywords]" value="<?php echo get_post_meta($post->ID, 'keywords', 1); ?>" style="width:100%" /></label> </p> <p> &nbsp;<em>Индексация:&nbsp;</em> <?php $radiobut = get_post_meta($post->ID, 'robots', 1); ?> <label><input type="radio" name="extra[robots]" value="index, follow" <?php checked( $radiobut, 'index, follow' ); ?> /> <em>index, follow</em></label>&nbsp; <label><input type="radio" name="extra[robots]" value="noindex, nofollow" <?php checked( $radiobut, 'noindex, nofollow' ); ?> /> <em>noindex, nofollow</em></label>&nbsp; <label><input type="radio" name="extra[robots]" value="index, nofollow" <?php checked( $radiobut, 'index, nofollow' ); ?> /> <em>index, nofollow</em></label>&nbsp; <label><input type="radio" name="extra[robots]" value="noindex, follow" <?php checked( $radiobut, 'noindex, follow' ); ?> /> <em>noindex, follow</em></label> </p> <input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" /> <?php } // Активация обновления полей при сохранении add_action('save_post', 'my_extra_fields_update', 0); // Сохранение данных при сохранении страницы function my_extra_fields_update( $post_id ) { if ( !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return false; // проверка, если это автосохранение if ( !current_user_can('edit_post', $post_id) ) return false; // проверка на случай, если пользователь не имеет права редактировать запись if( !isset($_POST['extra']) ) return false; // Если все ок, то сохраняем или удаляем данные $_POST['extra'] = array_map('trim', $_POST['extra']); foreach( $_POST['extra'] as $key=>$value ){ if( empty($value) ) continue delete_post_meta($post_id, $key); // удаляем поле, если оно пустое update_post_meta($post_id, $key, $value); // обновляем информацию } return $post_id; } // функция add_post_meta() срабатывает автоматически // end Custom Fields

Как видите, код хорошо прокомментирован, поэтому любой желающий без труда сможет подогнать его под себя, изменив существующие поля или добавив новые. Для этого будет достаточно даже базовых знаний HTML и PHP.

Чтобы вывести содержимое созданных произвольных полей, необходимо в нужном месте шаблона добавить следующий код:

Для вывода заголовка страницы (Title)

<?php echo get_post_meta($post->ID, 'title', true); ?>

Для вывода описания (Description)

<?php echo get_post_meta($post->ID, 'description', true); ?>

Для вывода ключевых слов (Keywords)

<?php echo get_post_meta($post->ID, 'keywords', true); ?>

Для вывода мета-тега robots

<?php echo '<meta name="robots" content="'; echo get_post_meta($post->ID, 'robots', true); echo '" />'; ?>

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

<?php echo "<title>"; // Если главная страница if (is_home() ) { bloginfo('name'); } // Если статическая страница или страница поста elseif ( is_single() || is_page() ) { if ( function_exists('get_post_meta') && get_post_meta($post->ID, 'title', true) ) { echo get_post_meta($post->ID, 'title', true); } else { single_post_title(); } } // Если страница категории elseif ( is_category() ) { single_cat_title(); } // Если страница тега elseif ( is_tag() ) { single_tag_title(); } // Если страница 404 elseif ( is_404() ) { echo "404 - такой страницы не существует"; } // Если страница поиска elseif ( is_search() ) { echo "Результаты поиска: "; echo wp_specialchars($s, 1); } else { wp_title(); } echo "</title>"; echo "\n"; // Description // Если домашняя страница if ( is_home() && !is_paged() ) { echo '<meta name="description" content="'; bloginfo('description'); echo '" />'; echo "\n"; } // Если статическая страница или страница поста if ( is_single() || is_page() ) { if ( function_exists('get_post_meta') && get_post_meta($post->ID, 'description', true) ) { echo '<meta name="description" content="'; echo get_post_meta($post->ID, 'description', true); echo '" />'; echo "\n"; } } // Keywords // Если главная страница if ( is_home() && !is_paged() ) { echo '<meta name="keywords" content="'; echo 'кофеварка, кофемашина, цена, отзыв'; echo '" />'; echo "\n"; } // Если статическая страница или страница поста if ( is_single() || is_page() ) { if ( function_exists('get_post_meta') && get_post_meta($post->ID, 'keywords', true) ) { echo '<meta name="keywords" content="'; echo get_post_meta($post->ID, 'keywords', true); // Выводит содержимое поля Keywords echo '" />'; echo "\n"; } } ?><?php if ( ( is_single() || is_page() || is_home() || is_category() || is_tag()) && ( !is_paged() ) ) { if ( is_single() || is_page() ) { if ( function_exists('get_post_meta') && get_post_meta($post->ID, 'robots', true) ) { echo '<meta name="robots" content="'; echo get_post_meta($post->ID, 'robots', true); echo '" />'; echo "\n"; } else { echo '<meta name="robots" content="index, follow" />' . "\n"; } } else { echo '<meta name="robots" content="index, follow" />' . "\n"; } } else { echo '<meta name="robots" content="noindex, follow" />' . "\n"; } ?>

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

Произвольные поля для страниц категорий (рубрик) WordPress

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

Как уже говорилось в начале статьи, создавать произвольные поля для категорий мы будем при помощи плагина Category Fields. Сразу хочу заметить, что данный плагин создает дополнительную таблицу в базе данных, поэтому ее нужно будет удалить, если вдруг когда-то вы захотите отказаться от использования данного плагина.

Итак, первым делом скачиваем плагин Category Fields, устанавливаем его к себе на сайт и активируем. После этого у вас в Административной панели — Параметры появится новый пункт меню под названием «Category Fields», перейдя в который вы сможете увидеть список всех категорий своего сайта.

Чтобы добавить произвольное поле для категории, выбираем нужную нам рубрику и жмем на ссылку «Select», как это показано на изображении ниже.

Меню плагина Category Fields

Далее вводим название произвольного поля (ключ) и его содержимое.

Добавление нового произвольного поля для категории Wordrpess

В данном примере мы создали четыре произвольных поля:

  • cat_title – произвольный заголовок категории.
  • cat_description – произвольное описание категории.
  • cat_keywords – произвольные ключевые слова категории.
  • cat_robots – произвольный мета-тег Robots.

Для вывода содержимого произвольного поля WordPress используйте следующий код:

Для вывода заголовка страницы (Title):

<?php echo get_cat_fields($cat, 'cat_title'); ?>

Для вывода описания (Description):

<?php echo get_cat_fields($cat, 'cat_description'); ?>

Для вывода ключевых слов (Keywords):

<?php echo get_cat_fields($cat, 'cat_keywords'); ?>

Для вывода мета-тега robots:

<?php echo '<meta name="robots" content="'; echo get_cat_fields($cat, 'cat_robots'); echo '" />'; ?>

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

Одной из целей является создание расширенного поиск, который превратит WordPress в универсальную систему для создания самых разнообразных сайтов, начиная от сайтов визиток и заканчивая каталогами товаров и интернет-магазинами. При этом использование дополнительных плагинов будет минимальным.

Если вы не хотите пропустить выхода новых статей, рекомендую подписаться на новостную рассылку, воспользовавшись формой подписки, расположенной ниже.

На этом данная статья подошла к концу. Вы также можете ознакомиться со следующими полезными статьями на блоге:

На этом все. Удачи вам и успеха в создании сайтов!

Как сделать произвольное поле 96
Как сделать произвольное поле 597
Как сделать произвольное поле 307
Как сделать произвольное поле 362
Как сделать произвольное поле 269
Как сделать произвольное поле 234
Как сделать произвольное поле 530
Как сделать произвольное поле 401
Как сделать произвольное поле 960
Как сделать произвольное поле 364
Как сделать произвольное поле 871
Как сделать произвольное поле 921
Как сделать произвольное поле 420
Как сделать произвольное поле 852
Как сделать произвольное поле 804
Поздравление с днем свадьбы от сестры для брата наКак сделать кликабельное постПиратское поздравление с днем рождения мужчинеДля детей своими руками на участкеЧем лечить сухой кашель в домашних условиях у взрослыхНаточит нож в домашних условияхКак выпрямить волосы в домашних условиях у мужчинБомбочки для ванны детям своими рукамиКак сделать домашних бройлеровВсем дед мороз раздает подаркиПодарки от первого класса 11Узор ажурный для спиц схемы его вязанияСхемы для вышивки большого размераКак приготовить пахлаву в домашних условиях с фотоСхемы вязания спицами носков с описанием и схемами

Похожие записи:

  • Тумбы для обуви с сиденьем своими руками
  • Приворот на фото. как сделать самой
  • Картинки красивых вышивок крестом
  • Как сделать куриное филе
  • Как украсит праздничный стол своими руками