/ Wordpress / Создание metabox'а

Создание metabox’а

HIT

18.08.2016

1968

Metabox — это произвольное поле реализованное в виде специальной формы (оболочка для PostMeta). Создание metabox’а самостоятельно — лучшая альтернатива плагину Advanced custom fields, особенно для релизации доп.полей в плагинах.

Создание metabox’а

Создаем 3 функции: инициализация metabox, функция вывода поля, функция сохранения значения.
slidelink — ID поля, понадобится при вызове.

add_action('add_meta_boxes', 'link_box');
function link_box() {
add_meta_box(
'slidelink_box',
'Ссылка слайда',
'atb_box_func', //привязка фукции вывода поля (ниже)
'slide',
'normal',
'high'
);
}

function atb_box_func($post){
$slidelink = get_post_meta($post->ID, 'slidelink', 1);

?>
<label><input style="width:100%;" type="text" name="extra[slidelink]" value="<?php if($slidelink){echo $slidelink;}?>" /></label>
<input type="hidden" name="atb_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
<?php
}


add_action('save_post', 'atb_box_update');
function atb_box_update($post_id){
if (!wp_verify_nonce($_POST['atb_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;    // Проверка, что нам пришли все поля
foreach($_POST['extra'] as $key=>$value){ // Циклом добавляем поля. Можно и в ручную это делать... Но так проще добавить новое поле
if(empty($value) AND $value != 0){ // Если значение пустое и не равно 0
delete_post_meta($post_id, $key); // Удаляем это поле из мета-данных
continue; // Продолжаем
}
update_post_meta($post_id, $key, $value); // Обновляем или добавляем мета-данные
}
return $post_id;
}

Вывод данных metabox’а

Вывод данных metabox’а аналогиечен выводу данных из PostMeta.

Также можно сделать проверку на наличие данных у metabox

<?php if ( get_post_meta($post->ID, 'thumb', true) ) : ?>
<a href="<?php the_permalink() ?>" rel="bookmark">
<img class="thumb" src="<?php echo get_post_meta($post->ID, 'thumb', true) ?>" alt="<?php the_title(); ?>" />
</a>
<?php endif; ?>

Metabox textarea

Имя поля, при выводе — config

add_action( 'add_meta_boxes', 'myplugin_add_custom_box' );

add_action( 'save_post', 'myplugin_save_postdata' );

// Adds a box to the main column on the Post and Page edit screens

function myplugin_add_custom_box() {
add_meta_box( 'wp_editor_test_1_box', 'Конфигурция зала', 'wp_editor_meta_box' );
}

// Prints the box content

function wp_editor_meta_box( $post ) {

// Use nonce for verification

wp_nonce_field( plugin_basename( __FILE__ ), 'myplugin_noncename' );

$field_value = get_post_meta( $post->ID, 'config', false );
wp_editor( $field_value[0], 'config' );
}

// When the post is saved, saves our custom data

function myplugin_save_postdata( $post_id ) {

// verify if this is an auto save routine.
// If it is our form has not been submitted, so we dont want to do anything
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;

// verify this came from the our screen and with proper authorization,
// because save_post can be triggered at other times
if ( ( isset ( $_POST['myplugin_noncename'] ) ) && ( ! wp_verify_nonce( $_POST['myplugin_noncename'], plugin_basename( __FILE__ ) ) ) )
return;

// Check permissions
if ( ( isset ( $_POST['post_type'] ) ) && ( 'page' == $_POST['post_type'] ) ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
}
else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}

// OK, we're authenticated: we need to find and save the data
if ( isset ( $_POST['config'] ) ) {
update_post_meta( $post_id, 'config', $_POST['config'] );
}

}

Чтобы добавить визуальный редактор — надо включить функцию Визуальный редактор в анонсе

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Загрузчик изображений для таксономии

Загрузчик изображений для таксономии

Создаем загрузчик изображений для термина таксономии. Данный пост содержит чистый метод создания metabox для термина таксономии. Есть более универсальный метод добавления изображений терминам, но нижеописанный способ может стать дополнительным, когда Читать далее »

/
Metabox для таксономии

Metabox для таксономии

Учимся создавать метаполя для терминов таксономии, оформлять их в виде metabox’а, а также выводить их во frontend. Визуальный редактор для описания терминов Превратить текстовое поле в стандартный визуальный редактор WP Читать далее »

Продвинутые metabox

Продвинутые metabox

Существую станданртные metabox: text, textarea (область текста), checkbox, radiobutton, selectbox (выпадающий список). Но помимо этих существуют более сложные metabox’ы, рассмотрим их. Metabox редактор WYSIWYG (старый способ) Metabox редактор WYSIWYG (новый Читать далее »

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

Пока нет комментариев. Будь первым!

Создание metabox’а
Статусы заказов
Рекомендации для васСтатусы заказовOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.