X

Перестал работать медиа загрузчик WordPress

Обновился до версии 3.3.1, поставил новую тему и конечно же, захотел добавить новый пост. Да не простой пост, а с картинкой. Но не тут-то было, новый media-загрузчик загружался, но на нажатие на кнопку "Выберите файлы" ничего не происходило. А по нажатию на ссылку "Попробуйте загрузчик браузера. ", я получал окно с 400 ошибкой. "Неплохо обновился" - подумал я и полез в поиск..

Надо сказать, что последнее время, я трачу в поиске, большую часть своего времени. Не потому что,  мне там нравится, а потому что все с чем сталкиваюсь, реально кривое какое-то. Начиная от настройки софта на linux серверах, заканчивая использованием сторонних библиотек в разработке. Единственное что радует меня, это новые темы для постов, и накопление опыта, который рядовые разработчики, нигде не смогут получить.. Соответственно я на фоне их, могу продать свои скиллы немного дороже.. Ну, хватит соплей, вернемся к поломанному загрузчику..

Первое что я подумал, это тупо ошибки в коде загрузчика. Открывшаяся консоль FireBug-а сказала, что я не прав, там было чисто. Тогда я подумал, что проблема в AdBlock-е, но он был отключен. На всякий случай, я проверил в другом броузере, поведение такое же, проблемы либо в скриптах, либо на сервере. Дальше я проверил права на папки с upload-ом, там тоже было все ок. Потом я нашел этот пост на хабре, в комментах которого говорилось, что могут быть проблемы из-за скриптов. Ага, значит возможно это не проблема WP, а проблема темы. Пошел изучать тему..

В теме у меня была вот такая загрузка jquery, в файле functions.php:

wp_deregister_script('jquery');
wp_register_script('jquery', ("https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"), false, '1.6.4');
wp_enqueue_script('jquery');

самая первая строчка меня и насторожила. Если деактивируется старый jquery, то возможно хериться какой-то функционал, т.к. в WP версия может быть иная. Так и получилось, я закоментил, это подключение, и загрузчик заработал. Отлично.

Теперь мне оставалось только, добавить подключение JQuery в саму тему. Это я сделал обычным образом, добавив подключение скрипта через html теги в файле header.php:

<head>
// разный код
<script language="JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
</head>

после этого проверил, функционал темы, который использовал JQuery, он работал. Значит проблема решена!

--[добавлено 02.07.12]--

Как заметил правильно в комментариях xelay, правильнее все же использовать подключение через functions.php. Поэтому я отказался от подключения jquery в header.php, и переписал подключение в functions.php, вот так:

    add_action( 'init', 'jquery_register' );
    function jquery_register() {
        if ( !is_admin() ) {
            wp_deregister_script( 'jquery' );
            wp_register_script( 'jquery', ( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' ), false, null, true );
            wp_enqueue_script( 'jquery' );
       }
    }

т.е. я подключаю JQuery для всего кроме админки. Этот способ так же работает, и проблемы не замечено.

Категории: CMS Wordpress
Тэги: Wordpress

Комментарии (3)

  • Добрый день! та же проблема, не работает add media в постах, но я не программист... вы можете как-то мне помочь?

    • Привет, проблема может быть из-за тысячи причин, нужно выяснять что случилось именно в твоем случае. Советую обратиться на фриланс: weblancer.net или fl.ru, там есть специалисты которые могут помочь.

  • следует теперь посмотреть, сколько раз грузится библиотека jquery (различных версий) на странице. После такого способа, наверняка добавятся еще одна. Изначальный вариант в functions.php считается более правильным (теоретически), поскольку он отключает родную библиотеку и подключает свою. Просто так получилось, что на вашей теме они не конфликтуют в каком-нибудь другом месте. Мне вот не повезло, гуглю и продолжаю искать ответы.