Добавление кнопки "Добавить медиафайл" в пользовательский плагин WordPress

2 сент. 2013 г., 18:09:52
Просмотры: 28.1K
Голосов: 13

Я разрабатываю пользовательский плагин и хотел бы добавить кнопку "Добавить медиафайл".

Мне нужна только возможность загрузки медиафайлов, без необходимости получения какого-либо контента/данных из загруженного файла.

Как я могу добавить эту кнопку?

Спасибо

0
Все ответы на вопрос 2
4
26

Если вы хотите добавить кнопку добавления медиафайлов в ваши панели администратора:

Вам необходимо использовать wp_enqueue_media();

add_action ( 'admin_enqueue_scripts', function () {
    if (is_admin ())
        wp_enqueue_media ();
} );

Затем используйте этот JavaScript:

jQuery(document).ready(function() {
    var $ = jQuery;
    if ($('.set_custom_images').length > 0) {
        if ( typeof wp !== 'undefined' && wp.media && wp.media.editor) {
            $('.set_custom_images').on('click', function(e) {
                e.preventDefault();
                var button = $(this);
                var id = button.prev();
                wp.media.editor.send.attachment = function(props, attachment) {
                    id.val(attachment.id);
                };
                wp.media.editor.open(button);
                return false;
            });
        }
    }
});

Используйте этот HTML:

<p>
    <input type="number" value="" class="regular-text process_custom_images" id="process_custom_images" name="" max="" min="1" step="1">
    <button class="set_custom_images button">Установить ID изображения</button>
</p>
4 сент. 2013 г. 22:26:00
Комментарии

Отлично! Я просто хотел заменить "$" на "jQuery", и всё заработало как ожидалось! Спасибо.

Libin Libin
31 дек. 2014 г. 13:01:59

Нет необходимости в is_admin(), когда вы используете хук admin_enqueue_scripts. Также я бы проверил, находитесь ли вы на нужной странице, с помощью get_current_screen().

Bjorn Bjorn
7 авг. 2019 г. 00:28:18

Для тех, кому, как и мне, может понадобиться URL изображения, можно использовать следующее: var attachmentURL = wp.media.attachment(attachment.id).get("url");. Я поместил это внутрь function(props, attachment)

seveninstl seveninstl
6 мар. 2020 г. 20:01:26

@seveninstl Я использую WordPress 5.6, и attachment.url работает. Есть ли какая-то причина использовать wp.media.attachment(attachment.id).get("url") ?

leaf leaf
10 дек. 2020 г. 11:44:54
0

Показывать миниатюру вместо числа

В качестве небольшой доработки я сделал следующее...

Изменил числовое поле ввода на скрытое.

Добавил:

$imgid = (isset($instance['imgid'])) ? $instance['imgid'] : "";
$img = wp_get_attachment_image_src($imgid, 'thumbnail');

И затем... перед скрытым полем.

if($img != "") {
?>
  <img src="<?= $img[0]; ?>" width="80px" /><br />
<?php 
}

Это позволит отображать миниатюру изображения на стороне пользователя вместо числа :)

27 мар. 2015 г. 22:15:16