jmatwork
  • 0
Учитель

Подключение к медиатеке для загрузки изображений (НЕ связанных с какой-либо публикацией)

  • 0

Мой старый вопрос:

Я сделал тему с вращающимся баннером, обычное дело. Поэтому я хочу, чтобы пользователи могли выбирать изображения. Я думаю, что вместо того, чтобы выполнять свою собственную загрузку, я думаю, что лучше разрешить пользователям использовать медиатеку, как мне это сделать?

Новый

Пока у меня есть что-то вроде ниже

functions.php

// init wordpress media upload stuff ...
if (is_admin() && isset($_GET['page']) && $_GET['page'] == 'elem_opts') {
  wp_enqueue_style('thickbox');
  wp_enqueue_script('media-upload');
  wp_enqueue_script('thickbox');
  wp_register_script('elem_adm_js', get_bloginfo('template_directory') . '/js/admin.js', array('jquery', 'media-upload', 'thickbox'));
  wp_enqueue_script('elem_adm_js');
}

admin.js

jQuery(document).ready(function($) {
    $('#elem_upload_logo').click(function() {
        tb_show('', 'media-upload.php?type=image&TB_iframe=true');
        return false;
    });

    window.send_to_editor = function (html) {
        imgurl = $('img', html).attr('src');
        $('input[name=elem_opts[h_image]]').val(imgurl);
        tb_remove();
    }
});

Появляется всплывающее окно загрузки медиа-библиотеки, я могу щелкнуть «Выбрать файлы», но когда я пытаюсь загрузить их, ничего не происходит. В Firebug я вижу следующее:

Share
  1. Пользуйтесь поиском, несколько постов об этом.

    • 0
  2. Вот 3 ссылки, чтобы вы начали, ваш вопрос должен быть более ясным, вы хотите, чтобы это работало как заголовок Twentyten, используя поле параметров пользовательской темы, категорию?

    Как использовать загрузку мультимедиа на странице параметров темы?
    Как я могу добавить поле загрузки изображения непосредственно на настраиваемую панель записи? Прикрепление
    мультимедиа к пользовательским сообщениям без редактора

    • 0
  3. 1) Я думаю, вам следует изменить файл JS. Это send_to_editor обработчик WordPress по умолчанию, который будет вставлять изображение в редактор. В своем коде вы его полностью заменили. Это не круто. Вы должны сделать резервную копию (я не уверен, что это может исправить ошибки, но, по крайней мере, ваш код будет работать более правильно):

    Что-то в этом коде я объясню ниже

    jQuery(document).ready(function($) {
        $('#elem_upload_logo').click(function() {
            var backup = window.send_to_editor, // backup the original 'send_to_editor' function which adds images to the editor
                post_id = $(this).attr('rel');  // get post ID
    
            // now you can change the default behavior
            window.send_to_editor = function (html) {
                // check the returned HTML code and do something with it
    
                // restore the default behavior
                window.send_to_editor = backup;
            }
    
            tb_show('', 'media-upload.php?type=image&TB_iframe=true&post_id=' + post_id);
            return false;
        });
    });
    

    2) Еще одна проблема с вашим кодом заключается в том, что возвращаемый файл html может не иметь img тегов. На самом деле это зависит от того, как пользователи выбирают способ привязки изображения (они могут привязать изображение к странице вложения, к файлу изображения или вообще никуда не ссылаться). Приведенный выше код работает только тогда, когда изображение связано с файлом изображения.

    Вы можете проверить эту ситуацию, вставив изображение в редактор, изменив способ привязки изображения, вы увидите фактический возвращенный html.

    3) Последняя проблема, которую я обнаружил при просмотре ваших ошибок, заключается в том, что вы не указали идентификатор сообщения. Загрузчик медиафайлов thinkbox должен иметь идентификатор записи.

    Чтобы исправить это, вы можете использовать простой трюк: в вашем PHP-коде, который повторяет #elem_upload_logo, установите его rel="<?php echo $post->ID; ?>" и в своем JS-скрипте извлеките этот атрибут и передайте его в URL-адрес загрузчика мультимедиа (как код выше).

    • 0

Оставить ответ

You must login to add an answer.