Добрый день! Подскажите, как реализовать на wordpress свою переменную, которую можно было бы редактировать через админку. Смысл заключается в том, что есть каталог заказа услуг. У каждой услуги есть цена в $. Цена * Курс доллара = Цена в рублях. Цена товара меняется за счет изменения курса доллара. Курс доллара должен редактироваться менеджером сайта. Хотелось бы, сделать раздел в админке, где можно вводить Курс доллара и сохранять его в таблицу БД, а на страницах заказа услуг подставить переменную, значение которого считывается из нужной таблицы. Возможно есть плагин - для реализации чего-то похожего, если кто сталкивался с данной темой подскажите please.
вот что надо Все что нам нужно для создания такого блока — это 2 хука: add_meta_boxes (или admin_init) и save_post, а также функция add_meta_box(), плюс немного знаний html и php. Добавляем следующий код в файл темы functions.php: 1. Создадим новый мета блок для постов (записей типа post) с названием "Дополнительные поля": PHP: <?php // подключаем функцию активации мета блока (my_extra_fields)add_action('add_meta_boxes', 'my_extra_fields', 1);function my_extra_fields() {add_meta_box( 'extra_fields', 'Дополнительные поля', 'extra_fields_box_func', 'post', 'normal', 'high' );} 2. Заполним этот блок полями html формы, делается это через, указанную в add_meta_box() функциюextra_fields_box_func(). Именно она отвечает за содержание мета блока: PHP: // код блокаfunction extra_fields_box_func( $post ){?><p><label><input type="text" name="extra[title]" value="<?php echo get_post_meta($post->ID, 'title', 1); ?>" style="width:50%" /> ? заголовок страницы (title)</label></p><p>Описание статьи (description):<textarea type="text" name="extra[description]" style="width:100%;height:50px;"><?php echo get_post_meta($post->ID, 'description', 1); ?></textarea></p><p>Видимость поста: <?php $mark_v = get_post_meta($post->ID, 'robotmeta', 1); ?><label><input type="radio" name="extra[robotmeta]" value="" <?php checked( $mark_v, '' ); ?> /> index,follow</label><label><input type="radio" name="extra[robotmeta]" value="nofollow" <?php checked( $mark_v, 'nofollow' ); ?> /> nofollow</label><label><input type="radio" name="extra[robotmeta]" value="noindex" <?php checked( $mark_v, 'noindex' ); ?> /> noindex</label><label><input type="radio" name="extra[robotmeta]" value="noindex,nofollow" <?php checked( $mark_v, 'noindex,nofollow' ); ?> /> noindex,nofollow</label></p><p><select name="extra[select]" /><?php $sel_v = get_post_meta($post->ID, 'select', 1); ?><option value="0">----</option><option value="1" <?php selected( $sel_v, '1' )?> >Выбери меня</option><option value="2" <?php selected( $sel_v, '2' )?> >Нет, меня</option><option value="3" <?php selected( $sel_v, '3' )?> >Лучше меня</option></select> ? выбор за вами</p><input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" /><?php} Все названия полей я оформил в массив extra[], чтобы потом проще было обработать эти данные. Спрятанное поле name="extra_fields_nonce", нужно для проверки при сохранении данных. 3. На этом этапе, мы уже создали блок произвольных полей, теперь нужно обработать данные полей при сохранении поста. Обработать, значит записать их в произвольные поля (в таблицу БД) или наоборот удалить. Для этого используем хук save_post, который срабатывает в момент сохранения поста. В этот момент мы получим данные из массива extra[] и обработаем них: PHP: <?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) ){delete_post_meta($post_id, $key); // удаляем поле если значение пустоеcontinue;}update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически}return $post_id;}?> Вот и все, блок произвольных полей готов!