/ Сайтостроение / Wordpress / Создание metabox'а

Создание metabox’а

18.08.2016

833

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 woocommerce

Metabox woocommerce

У плагина woocommerce есть набор дополнительных полей при редактировании товара. При необходимости можно в группы полей WC добавить свои произвольные metabox. Должно получится так: Создание и отображение metabox Первый экшн Читать далее »

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

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

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

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

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

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