Как добавить свои произвольные поля к посту в wordpress?

Как не используя плагины добавить произвольные поля в вордпресс. Нужно сохранять какие либо данные к статье. На сколько я знаю для этого нужно добавить код только в файл functions.php.

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

В примере добавляем к записям типа «post» произвольное поле для ввода ссылки на партнера.

// подключаем функцию активации мета блока (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');
 }
// код блока
 function extra_fields_box_func($post) {
 ?>
 <p>Ссылка: <?php $mark_v = get_post_meta($post->ID, 'price', 1); ?>
 <label><input type="text" size="70" name="extra[price]" value="<? echo htmlspecialchars($mark_v); ?>" /></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); // add_post_meta() работает автоматически
 }
 return $post_id;
 }

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

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.