## WP_ENQUEUE_MEDIA() │ WP 3.5.0
Функция wp_enqueue_media()
по��ключает все необходимые скрипты, стили, настройки и шаблоны для работы с медиафайлами в WordPress.
### Хуки функции
- media_upload_tabs
- media_library_show_audio_playlist
- media_library_show_video_playlist
- media_library_months_with_files
- media_library_infinite_scrolling
- disable_captions
- media_view_settings
- media_view_strings
- wp_enqueue_media
### Возвращаемое значение
- **null** — ничего не возвращает.
### Использование функции
Для подключения медиа-скриптов используйте такой код:
```php
wp_enqueue_media( $args );
Параметры (args)
- post (int|WP_Post) — ID поста или объект поста.
По умолчанию:
$args = array();
Примеры использования
Простой пример
Чтобы подключить необходимые медиа-скрипты для админки:
function my_enqueue_media() {
wp_enqueue_media();
}
add_action( 'admin_enqueue_scripts', 'my_enqueue_media' );
Пример для конкретного поста
Если необходимо подключить медиа-скрипты только для определённого поста (например, ID 34):
function my_enqueue_media() {
$args = array( 'post' => 34 );
wp_enqueue_media( $args );
}
add_action( 'admin_enqueue_scripts', 'my_enqueue_media' );
Важные заметки
- Глобальные переменные:
$content_width
— ширина контента.$wpdb
— объект для работы с базой данных WordPress.$wp_locale
— объект с локализацией даты и времени.
История изменений
- С 3.5.0: добавлена функциональность.
Код функции WP_ENQUEUE_MEDIA
function wp_enqueue_media( $args = array() ) {
if ( did_action( 'wp_enqueue_media' ) ) {
return;
}
global $content_width, $wpdb, $wp_locale;
$defaults = array(
'post' => null,
);
$args = wp_parse_args( $args, $defaults );
$tabs = array(
'type' => '',
'type_url' => '',
'gallery' => '',
'library' => '',
);
$tabs = apply_filters( 'media_upload_tabs', $tabs );
unset( $tabs['type'], $tabs['type_url'], $tabs['gallery'], $tabs['library'] );
$props = array(
'link' => get_option( 'image_default_link_type' ),
'align' => get_option( 'image_default_align' ),
'size' => get_option( 'image_default_size' ),
);
$exts = array_merge( wp_get_audio_extensions(), wp_get_video_extensions() );
$mimes = get_allowed_mime_types();
$ext_mimes = array();
foreach ( $exts as $ext ) {
foreach ( $mimes as $ext_preg => $mime_match ) {
if ( preg_match( '#' . $ext . '#i', $ext_preg ) ) {
$ext_mimes[$ext] = $mime_match;
break;
}
}
}
$show_audio_playlist = apply_filters( 'media_library_show_audio_playlist', true );
if ( null === $show_audio_playlist ) {
$show_audio_playlist = $wpdb->get_var(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'audio%' LIMIT 1"
);
}
$show_video_playlist = apply_filters( 'media_library_show_video_playlist', true );
if ( null === $show_video_playlist ) {
$show_video_playlist = $wpdb->get_var(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'video%' LIMIT 1"
);
}
$months = apply_filters( 'media_library_months_with_files', null );
if ( ! is_array( $months ) ) {
$months = $wpdb->get_results(
$wpdb->prepare(
"SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month FROM $wpdb->posts WHERE post_type = %s ORDER BY post_date DESC",
'attachment'
)
);
}
foreach ( $months as $month_year ) {
$month_year->text = sprintf(
/* translators: 1: Month, 2: Year. */
__( '%1$s %2$d' ),
$wp_locale->get_month( $month_year->month ),
$month_year->year
);
}
$infinite_scrolling = apply_filters( 'media_library_infinite_scrolling', false );
$settings = array(
'tabs' => $tabs,
'tabUrl' => add_query_arg( array( 'chromeless' => true ), admin_url( 'media-upload.php' ) ),
'mimeTypes' => wp_list_pluck( get_post_mime_types(), 0 ),
'captions' => ! apply_filters( 'disable_captions', '' ),
'nonce' => array(
'sendToEditor' => wp_create_nonce( 'media-send-to-editor' ),
'setAttachmentThumbnail' => wp_create_nonce( 'set-attachment-thumbnail' ),
),
'post' => array(
'id' => 0,
),
'defaultProps' => $props,
'attachmentCounts' => array(
'audio' => ( $show_audio_playlist ) ? 1 : 0,
'video' => ( $show_video_playlist ) ? 1 : 0,
),
'oEmbedProxyUrl' => rest_url( 'oembed/1.0/proxy' ),
'embedExts' => $exts,
'embedMimes' => $ext_mimes,
'contentWidth' => $content_width,
'months' => $months,
'mediaTrash' => MEDIA_TRASH ? 1 : 0,
'infiniteScrolling' => ( $infinite_scrolling ) ? 1 : 0,
);
$post = null;
if ( isset( $args['post'] ) ) {
$post = get_post( $args['post'] );
$settings['post'] = array(
'id' => $post->ID,
'nonce' => wp_create_nonce( 'update-post_' . $post->ID ),
);
}
if ( $post ) {
$post_type_object = get_post_type_object( $post->post_type );
} else {
$post_type_object = get_post_type_object( 'post' );
}
$strings = array(
'mediaFrameDefaultTitle' => __( 'Медиа' ),
'url' => __( 'URL' ),
'addMedia' => __( 'Добавить медиа' ),
'search' => __( 'Поиск' ),
'select' => __( 'Выбрать' ),
'cancel' => __( 'Отмена' ),
'update' => __( 'Обновить' ),
'replace' => __( 'Заменить' ),
'remove' => __( 'Удалить' ),
'back' => __( 'Назад' ),
'selected' => __( '%d выбрано' ),
'dragInfo' => __( 'Перетаскивайте для изменения порядка медиафайлов.' ),
// Загрузка.
'uploadFilesTitle' => __( 'Загрузить файлы' ),
'uploadImagesTitle' => __( 'Загрузить изображения' ),
// Библиотека.
'mediaLibraryTitle' => __( 'Медиатека' ),
'insertMediaTitle' => __( 'Добавить медиа' ),
// и другие строки...
);
$settings = apply_filters( 'media_view_settings', $settings, $post );
$strings = apply_filters( 'media_view_strings', $strings, $post );
$strings['settings'] = $settings;
wp_enqueue_script( 'media-editor' );
wp_localize_script( 'media-views', '_wpMediaViewsL10n', $strings );
wp_enqueue_script( 'media-audiovideo' );
wp_enqueue_style( 'media-views' );
if ( is_admin() ) {
wp_enqueue_script( 'mce-view' );
wp_enqueue_script( 'image-edit' );
}
wp_enqueue_style( 'imgareaselect' );
wp_plupload_default_settings();
require_once ABSPATH . WPINC . '/media-template.php';
add_action( 'admin_footer', 'wp_print_media_templates' );
add_action( 'wp_footer', 'wp_print_media_templates' );
add_action( 'customize_controls_print_footer_scripts', 'wp_print_media_templates' );
do_action( 'wp_enqueue_media' );
}
Связанные функции
wp_add_inline_script()
wp_dequeue_script()
wp_deregister_script()
wp_enqueue_script()
wp_localize_script()
wp_register_script()
wp_script_add_data()
wp_script_is()
Скрипты и стили
add_editor_style()
wp_add_inline_style()
wp_dequeue_style()
wp_deregister_style()
wp_enqueue_style()