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

Создание metabox’а

HIT

18.08.2016

1038

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

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

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

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

Metabox woocommerce

Metabox woocommerce

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

/

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

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

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