add_action( 'admin_enqueue_scripts', 'true_include_myuploadscript' );
function true_include_myuploadscript( $hook ) {
if ( ! did_action( 'wp_enqueue_media' ) ) {
wp_enqueue_media();
}
wp_enqueue_script( 'myuploadscript', get_stylesheet_directory_uri() . '/js/upload.js', array('jquery'), null, false );
}
function true_image_uploader_field( $args ) {
$value = $args[ 'value' ];
$default = get_stylesheet_directory_uri() . '/placeholder.png';
if( $value && ( $image_attributes = wp_get_attachment_image_src( $value, array( 150, 110 ) ) ) ) {
$src = $image_attributes[0];
} else {
$src = $default;
}
echo '
<div class="trueimg">
<img data-src="' . $default . '" src="' . $src . '" width="150" />
<div>
<input type="hidden" name="' . $args[ 'name' ] . '" id="' . $args[ 'name' ] . '" value="' . $value . '" />
<button type="submit" class="upload_image_button button">Загрузить</button>
<button type="submit" class="remove_image_button button">×</button>
</div>
</div>
';
}
// Добавляем метабокс
add_action( 'add_meta_boxes', 'true_meta_boxes_u' );
function true_meta_boxes_u() {
add_meta_box( 'truediv', 'Фотографии', 'true_print_box_u', 'model_profile', 'normal', 'high' );
}
// Заполняем метабокс
function true_print_box_u( $post ) {
if( function_exists( 'true_image_uploader_field' ) ) {
true_image_uploader_field( array(
'name' => 'uploader_custom',
'value' => get_post_meta( $post->ID, 'uploader_custom', true ),
) );
}
}
// Сохраняем данные произвольного поля
add_action('save_post', 'true_save_box_data_u');
function true_save_box_data_u( $post_id ) {
if( isset( $_POST[ 'uploader_custom' ] ) ) {
update_post_meta( $post_id, 'uploader_custom', absint( $_POST[ 'uploader_custom' ] ) );
}
return $post_id;
}
jQuery(function ($) {
/*
* действие при нажатии на кнопку загрузки изображения
* вы также можете привязать это действие к клику по самому изображению
*/
$('.upload_image_button').click(function (e) {
e.preventDefault();
var button = $(this);
var custom_uploader = wp
.media({
title: 'Выбрать изображение',
button: {
text: 'Выбрать изображение',
},
multiple: true, // Тут и нужно установить true для мультизагрузки
})
.on('select', function () {
var attachment = custom_uploader.state().get('selection').toJSON();
$(button).parent().prev().attr('src', attachment.url);
$(button).prev().val(attachment.id);
})
.open();
});
/*
* удаляем значение произвольного поля
* если быть точным, то мы просто удаляем value у <input type="hidden">
*/
$('.remove_image_button').click(function (event) {
event.preventDefault();
if (true) {
const src = $(this).parent().prev().data('src');
$(this).parent().prev().attr('src', src);
$(this).prev().prev().val('');
}
});
});