Функция wp_enqueue_media()
в WordPress позволяет разработчикам подключать все необходимые скрипты, стили и шаблоны для работы с медиа API. Она особенно полезна для реализации функционала загрузки и выбора медиафайлов, таких как изображения, видео и аудио, в админ-панели.
wp_enqueue_media( array $args = array() )
Описание
wp_enqueue_media()
подключает все файлы, необходимые для использования медиа API WordPress, включая окно загрузки и выбора файлов. Эта функция должна вызываться во время события admin_enqueue_scripts
или позже.
Параметры
- $args (массив) – Опциональный параметр, содержащий аргументы для подключения медиа скриптов.
- post (int|WP_Post) – ID поста или объект поста. Это позволяет подключить скрипты только для определенного поста.
- По умолчанию:
array()
Возвращаемое значение
Функция не возвращает ничего (null).
Применение
Для использования функции wp_enqueue_media()
вы должны вызывать её в хуке admin_enqueue_scripts
.
Пример 1: Базовое использование
Подключение всех скриптов, стилей и шаблонов для медиа API WordPress можно сделать следующим образом:
function my_enqueue_media() {
wp_enqueue_media(); // Подключаем все скрипты и стили для медиа API
}
add_action( 'admin_enqueue_scripts', 'my_enqueue_media' );
Пример 2: Подключение медиа скриптов для конкретного поста
Если вам нужно подключить скрипты только для определенного поста, вы можете передать аргумент post
:
function my_enqueue_media() {
$args = array( 'post' => 34 ); // ID поста, для которого подключаем скрипты
wp_enqueue_media( $args );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue_media' );
Пример использования на странице настроек
Если вы хотите добавить поле для загрузки и выбора изображения на страницу настроек админ-панели, вам нужно выполнить несколько шагов:
- Подключите скрипты медиа.
- Создайте HTML-код для поля выбора изображения.
- Используйте JavaScript для обработки события выбора файла.
Вот пример реализации:
<?php
function my_enqueue_media() {
wp_enqueue_media(); // Подключаем медиа API
}
add_action( 'admin_enqueue_scripts', 'my_enqueue_media' );
function my_settings_page() {
?>
<div class="wrap">
<h1>Настройки изображения</h1>
<form method="post" action="options.php">
<?php settings_fields( 'my_options_group' ); ?>
<label for="my_image">Выберите изображение:</label>
<input type="text" id="my_image" name="my_image" value="<?php echo esc_attr( get_option('my_image') ); ?>" />
<button id="upload_image_button" class="button">Загрузить изображение</button>
<?php submit_button(); ?>
</form>
</div>
<script>
jQuery(document).ready(function($){
var mediaUploader;
$('#upload_image_button').click(function(e) {
e.preventDefault();
// Если медиаплеер уже открыт, просто фокусируем его
if (mediaUploader) {
mediaUploader.open();
return;
}
// Создаем медиаплеер
mediaUploader = wp.media({
title: 'Выберите изображение',
button: {
text: 'Выбрать изображение'
},
multiple: false // Не допускаем множественный выбор
});
// Обработка выбора изображения
mediaUploader.on('select', function() {
var attachment = mediaUploader.state().get('selection').first().toJSON();
$('#my_image').val(attachment.url); // Записываем URL изображения в поле
});
mediaUploader.open();
});
});
</script>
<?php
}
add_action('admin_menu', function() {
add_menu_page('Настройки изображения', 'Настройки изображения', 'manage_options', 'my-settings', 'my_settings_page');
});
Заключение
Функция wp_enqueue_media()
предоставляет мощные инструменты для работы с медиа в WordPress. Подключая необходимые скрипты и стили, вы можете легко реализовать функционал загрузки и выбора медиафайлов на своих страницах настроек и в админ-панели. Используя приведенные примеры, вы можете адаптировать функциональность в соответствии с вашими потребностями.