Я знаю, что есть плагины, которые извлекают изображения с удаленного URL и хранят локально. Я просто хочу знать, возможно ли не хранить изображение в библиотеке мультимедиа, но использовать его в качестве избранного изображения ?
20
the_post_thumnail()
он присутствует (или похожую функцию), или заставить его работать с различными размерами изображения, определенными темой или плагином.Ответы:
Да, это возможно и довольно легко.
Это рабочий процесс, который я предлагаю:
'admin_post_thumbnail_html'
фильтр'save_post'
ловушку действия, чтобы сохранить URL (после процедуры безопасности и проверки) в пользовательском мета-посте'post_thumbnail_html'
фильтр-ловушку для вывода правильной<img>
разметки, переопределяя значение по умолчанию, если сообщение, для которого требуется выделенное изображение, имеет мета-запись публикации с внешним выделенным изображениемДля работы этого рабочего процесса необходимо, чтобы показанное изображение отображалось в шаблоне с помощью
get_the_post_thumnbail()
илиthe_post_thumbnail()
функций.Более того, мы должны быть уверены, что
'_thumbnail_id'
мета-значение имеет непустое значение, когда мы устанавливаем мета для внешнего URL-адреса, в противном случаеhas_post_thumbnail()
будет возвращаться значение false для постов, которые имеют только внешнее выделенное изображение.Фактически, возможно, что у поста есть и стандартное локальное изображение, и изображение, установленное в нашем рабочем процессе, и в этом случае будет использоваться внешнее.
Для реализации нашего рабочего процесса нам нужна функция для проверки URL, используемого в качестве внешнего изображения, потому что мы должны быть уверены, что это действительный URL изображения.
Есть разные способы сделать эту задачу; здесь я использую очень простой способ, который только смотрит на URL, не загружая изображение. Это работает только для статических URL-адресов изображений и не проверяет, действительно ли изображение существует, но это быстро. Измените его на что-то более продвинутое, если вам нужно ( вот некоторая помощь).
Довольно легко. Теперь давайте добавим 3 хука, описанных в рабочем процессе выше:
и связанные функции. Сначала тот, который выводит поле в админке:
Обратите внимание, что я использовал
'txtdomain'
в качестве текстового домена, но вы должны использовать правильный, зарегистрированный текстовый домен.Вот как выглядит результат, когда он пуст:
И вот как это выглядит после добавления URL-адреса изображения и сохранения / обновления сообщения:
Итак, теперь наш интерфейс администратора готов, давайте напишем подпрограмму сохранения:
Функция, после некоторых проверок безопасности, просматривает опубликованный URL и, если все в порядке, сохраняет его в
'_thumbnail_ext_url'
мета-посте. Если URL-адрес пуст, а мета была сохранена, он удаляется, что позволяет удалить мету, просто очистив поле внешнего URL-адреса.Последнее, что нужно сделать, это вывести разметку избранного изображения, когда наш внешний URL-адрес изображения установлен в meta:
Мы сделали.
Что осталось сделать
В выводе избранного изображения я не использовал
width
ниheight
свойства, ни классы, которые обычно добавляет WordPress, например'attachment-$size'
. Это связано с тем, что анализ размера изображения требует дополнительной работы, которая замедляет загрузку страницы, особенно если на странице имеется более одного изображения.Если вам нужны эти атрибуты, вы можете использовать мой код, добавив обратный вызов для
wp_get_attachment_image_attributes'
фильтрации (это стандартная перехват WordPress ), или, возможно, вы можете изменить мой код, чтобы анализировать размер изображения и выводить связанные атрибуты и классы.Плагин Гист
Весь код размещен здесь, за исключением добавления надлежащей инициализации текста домена, доступен как полноценный работающим плагин в Сущности здесь . Код там использует пространство имен, поэтому он требует PHP 5.3+.
Примечания
Конечно, вы должны быть уверены, что у вас есть лицензия и разрешение на использование и ссылки на ваш сайт с внешних ссылок.
источник