Рекомендую хостингПеренос сайтов и месяц на тестирование - бесплатно!

Как без плагинов добавить свои поля к записям или страницам wordpress

155

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

Чтобы добавить кастомные поля, необходимо отредактировать файл functions.php вашей темы и добавить для постов meta box, который в WordPress используется для вывода дополнительных полей (мета-боксов). В качестве примера добавим поля имя, дата и комментарий к стандартным записям wordpress.

Добавляем поля

1Функция для вывода дополнительного блока (meta box)

function add_custom_fields() {
add_meta_box(
'my_custom_fields', // идентификатор мета-бокса
'Мои поля', // заголовок мета-бокса
'custom_fields_init', // функция обратного вызова
'post', // тип записи, для которой будет отображаться мета-бокс
'normal', // расположение мета-бокса (normal, advanced, side)
'high' // приоритет мета-бокса (high, core, default, low)
);
}
add_action('add_meta_boxes', 'add_custom_fields');

Если поля нужно добавить к страницам или кастомному типу записей, то необходимо сменить тип записи с post на page или на название вашего типа записи.

2Выводим поля с помощью функции обратного вызова

function custom_fields_init($post) {
wp_nonce_field('add_custom_fields_nonce', 'add_custom_fields_nonce');

$add_custom_fields = get_post_meta($post->ID, 'add_custom_fields', true);

?>

<label for="add_custom_field_1">Имя:</label>
<input type="text" name="add_custom_field_1" id="add_custom_field_1" value="<?php echo esc_attr($add_custom_fields['field_1']); ?>">

<label for="add_custom_field_2">Дата:</label>
<input type="date" name="add_custom_field_2" id="add_custom_field_2" value="<?php echo esc_attr($add_custom_fields['field_2']); ?>">

<label for="my_custom_field_3">Комментарий:</label>
<textarea name="add_custom_field_3" id="add_custom_field_3"><?php echo esc_textarea($add_custom_fields['field_3']); ?></textarea>

<?php
}

3Сохраняем поля в БД

function save_custom_fields($post_id) {
if (!isset($_POST['add_custom_fields_nonce']) || !wp_verify_nonce($_POST['add_custom_fields_nonce'], 'add_custom_fields_nonce')) {
return;
}

if (!current_user_can('edit_post', $post_id)) {
return;
}

$add_custom_fields = array(
'field_1' => sanitize_text_field($_POST['add_custom_field_1']),
'field_2' => wp_kses_post($_POST['add_custom_field_2']),
'field_3' => wp_kses_post($_POST['add_custom_field_3']),
);

update_post_meta($post_id, 'add_custom_fields', $add_custom_fields);
}
add_action('save_post', 'save_custom_fields');

В результате у записей появится такой метабокс с полями

Как вывести поля на сайте?

Для вывода полей используется функция get_post_meta(). Чтобы вывести поля в шаблоне записей (обычно он называется single.php или archive.php и лежит в корне темы сайта) нужно добавить такой код:

$custom_fields = get_post_meta($post->ID, 'add_custom_fields', true);
foreach ($custom_fields as $field) {
echo !empty($field) ? $field.'<br>' : ''; // выводим все поля
}

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

$custom_fields = get_post_meta($post->ID, 'add_custom_fields', true);
echo $custom_fields['field_1']; // выведет первое поле
echo $custom_fields['field_2']; // выведет второе поле
echo $custom_fields['field_3']; // выведет третье поле
}

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

Как сделать шаблон страницы в wordpress, можно прочитать здесь.

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

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

*
code