Продолжаем наше знакомство с админкой WordPress, и ее модификацией под свои нужды. Бывают ситуации, когда готовый шаблон под wordpress не имеет нужных возможностей. К примеру, на игровом сайте нужно в отдельном окне вывести вес файла с игрой, или в онлайн-кинотеатре поставить дату создания фильма.В этом случае необходимо добавлять произвольные поля в админку, которые заполняются во время создания записи и последующей публикации статьи.
Конечно, существуют плагины для решения подобных задач, но они нагружают и без того громоздкий движок, поэтому лучше добавить дополнительные поля в WordPress без плагина.
WordPress добавление поля
Откроем файл functions.php и вставим строки:
add_action('add_meta_boxes', 'extra_fields', true);
и
function extra_fields(){ add_meta_box('extra_fields', 'Название блока дополнительных полей', 'extra_fields_box_func', array('post'), 'normal', 'high'); }
Эта функция выводит Ваши произвольные поля в админ панель wordpress, вставляем и это
Ну и наконец вставляем функцию сохранения значений полей:
Значения между тегами <label>Поле 1</label> будет отображаться в админке, поэтому их следует назвать по своему усмотрению, согласно его назначению.
Значения pole_1, pole_2, … и тд также можно поставить свои, только нужно незабыть их изменить и в других участках кода name=»extra[pole_1]», name=»extra[pole_2]», … и тд.
Получать и выводить сохраненне значения нужного поля, например в файле single.php, можно при помощи этой функции:
echo get_post_meta($post->ID, 'pole_X', true);
где $post->ID ID записи, а pole_X ее имя.
Ниже приведен скрин работающего примера, как располагаются произвольные поля в админке одного из моих сайтов.
Ну вот впринципе и все.
В заключение хочу добавить, поле «Имя поля» нужно заполнять латиницей без пробелов, и без использования специальных символов, только буквы, цифры и подчеркивание.
Автор статьи: Alec Morty
5 Комментариев — Развернуть
У вас ошибка в скрипте
$key=—>$value, а должно быть $key=>$value
Исправлено
Добрый день.
А как назначить мета боксы для страниц? Исправил здесь …. add_meta_box(‘extra_fields’, …..array(‘page’), на страницы, а далее ?
Подскажите пожалуйста.
=—>в строчке $_POST[‘extra’] as $key=—>$value сейчас уже не работает в последних версиях php, нужно => использовать, а так спасибо за статью!
Откуда взялось $_POST[‘extra’] ??? Что это за данные и как они сюда попали?