¿Es posible establecer una imagen destacada con URL de imagen externa?
20
Sé que hay complementos que obtienen imágenes de una URL remota y se almacenan localmente. Solo quiero saber si es posible no almacenar la imagen en la Biblioteca de medios y usarla como imagen destacada .
Puede hacerlo con un campo personalizado donde almacena la URL de la imagen externa. Puede ser difícil hacerlo funcionar cada vez que the_post_thumnail()está presente (o una función similar) o hacerlo funcionar con diferentes tamaños de imagen definidos por el tema o el complemento.
¿Almacena la imagen localmente o llama de forma remota?
Volatil3
@ Volatil3 No lo he probado, pero al leer la descripción del complemento, diría que lo llama de forma remota.
Andy Macaulay-Brook
Respuestas:
35
Sí, es posible y bastante fácil.
Este es el flujo de trabajo que sugiero:
Coloque en algún lugar una IU para insertar la URL de la imagen destacada. Probablemente la mejor opción es usar 'admin_post_thumbnail_html'gancho de filtro
Use 'save_post'el enlace de acción para guardar la URL (después de la rutina de seguridad y validación) en una metaetiqueta personalizada
Use el 'post_thumbnail_html'gancho de filtro para generar el <img>marcado adecuado , anulando el valor predeterminado, si la publicación para la que se requiere la imagen destacada tiene el mensaje meta con la imagen destacada externa
Además, debemos estar seguros de que el '_thumbnail_id'metavalor tiene un valor no vacío cuando configuramos el meta para la URL externa, de lo contrario has_post_thumbnail(), devolverá falso para las publicaciones que solo tienen una imagen destacada externa.
De hecho, es posible que una publicación tenga una imagen destacada local estándar y un conjunto a través de nuestro flujo de trabajo, y en este caso se usará la externa.
Para implementar nuestro flujo de trabajo, necesitamos una función para validar la URL utilizada como imagen destacada externa, porque debemos asegurarnos de que sea una URL de imagen válida.
Hay diferentes formas de hacer esta tarea; aquí uso una forma muy simple que solo mira la URL, sin descargar la imagen. Esto funciona solo para URL de imagen estática y no verifica que la imagen realmente exista, pero es rápida. Modifíquelo a algo más avanzado si lo necesita ( aquí hay algo de ayuda).
La función, después de algunas comprobaciones de seguridad, mira la URL publicada y, si está bien, la guarda en '_thumbnail_ext_url'la meta meta. Si la URL está vacía y se guardó el meta, se elimina, lo que permite eliminar el meta simplemente vaciando el campo URL externo.
Lo último que debe hacer es generar el marcado de la imagen destacada cuando nuestra URL de imagen externa se establece en meta:
En la salida de imagen presentada no he usado widthni heightpropiedades, ni clases que WordPress suele agregar, como 'attachment-$size'. Esto se debe a que detectar el tamaño de una imagen requiere un trabajo adicional que ralentizará la carga de la página, especialmente si tiene más de una imagen destacada en la página.
Si necesita esos atributos, puede usar mi código agregando una devolución de llamada para wp_get_attachment_image_attributes'filtrar (es un enlace estándar de WordPress ) o tal vez puede alterar mi código para detectar el tamaño de la imagen y generar atributos y clases relacionados.
Plugin Gist
Todo el código publicado aquí, con la excepción de agregar una inicialización de dominio de texto adecuada, está disponible como complemento completo en un Gist aquí . El código allí usa un espacio de nombres, por lo que requiere PHP 5.3+.
Notas
Por supuesto, debe asegurarse de tener licencia y autorización para usar y vincular imágenes en su sitio de otras externas.
the_post_thumnail()
está presente (o una función similar) o hacerlo funcionar con diferentes tamaños de imagen definidos por el tema o el complemento.Respuestas:
Sí, es posible y bastante fácil.
Este es el flujo de trabajo que sugiero:
'admin_post_thumbnail_html'
gancho de filtro'save_post'
el enlace de acción para guardar la URL (después de la rutina de seguridad y validación) en una metaetiqueta personalizada'post_thumbnail_html'
gancho de filtro para generar el<img>
marcado adecuado , anulando el valor predeterminado, si la publicación para la que se requiere la imagen destacada tiene el mensaje meta con la imagen destacada externaPara funcionar, este flujo de trabajo necesita que la imagen presentada se muestre en la plantilla usando
get_the_post_thumnbail()
othe_post_thumbnail()
funciones.Además, debemos estar seguros de que el
'_thumbnail_id'
metavalor tiene un valor no vacío cuando configuramos el meta para la URL externa, de lo contrariohas_post_thumbnail()
, devolverá falso para las publicaciones que solo tienen una imagen destacada externa.De hecho, es posible que una publicación tenga una imagen destacada local estándar y un conjunto a través de nuestro flujo de trabajo, y en este caso se usará la externa.
Para implementar nuestro flujo de trabajo, necesitamos una función para validar la URL utilizada como imagen destacada externa, porque debemos asegurarnos de que sea una URL de imagen válida.
Hay diferentes formas de hacer esta tarea; aquí uso una forma muy simple que solo mira la URL, sin descargar la imagen. Esto funciona solo para URL de imagen estática y no verifica que la imagen realmente exista, pero es rápida. Modifíquelo a algo más avanzado si lo necesita ( aquí hay algo de ayuda).
Muy fácil. Ahora agreguemos los 3 ganchos descritos en el flujo de trabajo anterior:
y las funciones relacionadas. Primero el que genera el campo en el administrador:
Tenga en cuenta que lo he usado
'txtdomain'
como dominio de texto, pero debe usar un dominio de texto registrado adecuado.Así es como se ve la salida cuando está vacía:
Y así es como se ve después de agregar una URL de imagen y guardar / actualizar la publicación:
Entonces, ahora que nuestra interfaz de usuario de administración ha terminado, escribamos la rutina de guardado:
La función, después de algunas comprobaciones de seguridad, mira la URL publicada y, si está bien, la guarda en
'_thumbnail_ext_url'
la meta meta. Si la URL está vacía y se guardó el meta, se elimina, lo que permite eliminar el meta simplemente vaciando el campo URL externo.Lo último que debe hacer es generar el marcado de la imagen destacada cuando nuestra URL de imagen externa se establece en meta:
Hemos terminado.
Lo que queda por hacer
En la salida de imagen presentada no he usado
width
niheight
propiedades, ni clases que WordPress suele agregar, como'attachment-$size'
. Esto se debe a que detectar el tamaño de una imagen requiere un trabajo adicional que ralentizará la carga de la página, especialmente si tiene más de una imagen destacada en la página.Si necesita esos atributos, puede usar mi código agregando una devolución de llamada para
wp_get_attachment_image_attributes'
filtrar (es un enlace estándar de WordPress ) o tal vez puede alterar mi código para detectar el tamaño de la imagen y generar atributos y clases relacionados.Plugin Gist
Todo el código publicado aquí, con la excepción de agregar una inicialización de dominio de texto adecuada, está disponible como complemento completo en un Gist aquí . El código allí usa un espacio de nombres, por lo que requiere PHP 5.3+.
Notas
Por supuesto, debe asegurarse de tener licencia y autorización para usar y vincular imágenes en su sitio de otras externas.
fuente