Поддержка Проблемы и решения Загрузить файл в свою подпапку wp-content

  • Решено Alexander Babaev

    (@babaevan)


    Здравствуйте, уважаемые форумчане!
    Возможно, вопрос не из того раздела, тогда, уважаемые модераторы, переместите его куда надо.

    Предыстория: мой хостинг не поддерживает какие-то библиотеки (их довольно много, поэтому писать все смысла нет; прошу не предлагать сменить хостинг, так как это невозможно!) и в итоге при загрузке не создаются обрезанные версии изображений. Я записи вывожу с помощью специального плагина и на главной странице получается 6 постов, у которых изображением заголовка стоят изображения шириной в 1200px+, которые пережимаются в 300px. Сами понимаете, что это очень влияет на время загрузки. Решили вручную обрезать изображения и заливать их, прикрепляя к посту с помощью postmeta «postimg» (несколько копий изображения в медиафайлах как-то не очень хорошо для нас). Но каждый раз при добавлении новости открывать FTP и загружать картинку не очень-то хорошая перспектива, вот и решили добавить в уже имеющийся мета-бокс нашей темы возможность загрузки файла при редактировании поста.

    Вопрос: как это правильно сделать?

    Попытался так:
    при создании метабокса:
    <input name="mcbsu_postimg_uploader" type="file" />
    при сохранении:

    //Загружаем файл
    if (isset($_POST['mcbsu_postimg_uploader'])) {
    $floadcontent = file_get_contents($_POST['mcbsu_postimg_uploader']);
    $postimgname = $_POST['mcbsu_postimg_uploader'];
    $upload = wp_upload_bits($postimgname, NULL, $floadcontent);
    if(!$upload['error']) {
    update_post_meta($post_id, 'mcbsu_postimg', $file);
    }
    }
Просмотр 15 ответов — с 16 по 30 (всего 31)
  • Только вот это может быть только одна дорога на всём белом свете.

    Но это не так. И даже её можно починить.
    Или же выбрать другое транспортное средство.

    Автор Alexander Babaev

    (@babaevan)

    Но это не так.

    К сожалению, так.

    И даже её можно починить

    Не спорю.

    Вы, случаем, не знаете, как добавить возможность загрузки через сайт, а не напрямую?

    К сожалению, так.

    Не так — на белом свете есть множество дорог и путей.
    Это в линейной математике 2+2 всегда равно четыре. В жизни же любая задача имеет больше одного решения.
    Вы вот зачем-то выбрали заведомо корявый путь. И решение придумали ему подстать.

    Вы, случаем, не знаете, как добавить возможность загрузки через сайт, а не напрямую?

    Миниатюр? К уже загруженным изображениям? :))) Нет конечно. И вряд ли оно существует. О чем Вам и толкую.

    Но если Вы захотите побороть проблему с GD — создайте отдельный топик, может что-то и решится с ним.

    Автор Alexander Babaev

    (@babaevan)

    Миниатюр? К уже загруженным изображениям? :))) Нет конечно. И вряд ли оно существует. О чем Вам и толкую.

    Т.е. никак файлы нельзя загружать, передавая ссылку в произвольное поле?

    Модератор Yuri

    (@yube)

    Т.е. никак файлы нельзя загружать, передавая ссылку в произвольное поле?

    Можно, конечно.

    Автор Alexander Babaev

    (@babaevan)

    Можно, конечно.

    Не подскажите, как это сделать? Есть ли где-то какая-то литература, чтобы понять как это реализовать?

    Модератор Yuri

    (@yube)

    http://php.net/manual/ru/features.file-upload.post-method.php
    Специфические для WP функции и приёмы — в Кодексе.

    Не подскажите, как это сделать? Есть ли где-то какая-то литература, чтобы понять как это реализовать?

    Да поймите же наконец — когда Вы загружаете что-то в медиатеку — ВП сразу к ЭТОМУ ИЗОБРАЖЕНИЮ (тип поста «аттач») создаёт МИНИАТЮРЫ («свойства» сущности типа контента, упрощённо говоря).

    Вам нужно (точнее не нужно, но вы этого хотите) загрузить собственноручно нарезанные МИНИАТЮРЫ и присвоить их уже загруженным аттачам.
    Но уже во время их загрузки произойдет первый шаг. Соответственно чтобы этого не было — надо грузить мимо ВП, а потом каким-то образом цеплять.
    Мало того, что это нетривиальная задачка, но даже сама нарезка миниатюр — это какой-то.. ахтунг. Вряд ли кому-то такое в голову приходило. Проще/правильнее/дешевле/разумнее использовать ВП и сервер для этого.

    Модератор Denis Yanchevskiy

    (@denisco)

    WordPress-разработчик, denisco.pro

    Не подскажите, как это сделать? Есть ли где-то какая-то литература, чтобы понять как это реализовать?

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

    Автор Alexander Babaev

    (@babaevan)

    Нашёл я в чём проблема. У меня не поддерживается работа с jpg. C png он делает всё гуд!

    хм. проблема это не то, что не поддерживается jpg, а то, что почему это так.

    с png сыт не будешь — wordpress из png способен миниатюры нарезать в 5 раз больше размером, чем оригинал.

    Модератор Yui

    (@fierevere)

    永子

    У меня не поддерживается работа с jpg

    у вас и в выводе инфо о GD нет поддержки JPEG, чего кстати никто не заметил,
    потому что наличие там JPEG — также естественно как дышать
    И вы все еще держитесь за такой хостинг?

    PS: еще у вас в GD нет поддержки FreeType, т.е. наложение текста (с заданным шрифтом) у вас тоже работать не будет, часто это используется для генерации капчи,
    но это мелочи конечно

    • Ответ изменён 5 лет назад пользователем Yui.
    Автор Alexander Babaev

    (@babaevan)

    И вы все еще держитесь за такой хостинг?

    У меня не стоит вопрос смены хостинга. Поверьте это невозможно. И прошу этот вопрос больше не поднимать. В понедельник тогда свяжусь со специалистами хостинга. Пусть подключают тогда.

    Модератор Yui

    (@fierevere)

    永子

    Пусть подключают тогда.

    им это будет достаточно сложно. Если у них такая конфигурация модуля GD, то скорее всего PHP они собрали сами и собрали весьма криво… лечится пересборкой (или установкой дистрибутивной версии), что для них может быть весьма болезненно.

    у вас и в выводе инфо о GD нет поддержки JPEG, чего кстати никто не заметил,

    Может никто и не в всматривался сильно и допускал что была показана неполная инфа. Тк это уже не совсем по теме.
    Но при этом ТСу было предложено:

    Но если Вы захотите побороть проблему с GD — создайте отдельный топик, может что-то и решится с ним.

    Видимо, не хочет.

Просмотр 15 ответов — с 16 по 30 (всего 31)
  • Тема «Загрузить файл в свою подпапку wp-content» закрыта для новых ответов.