Seleccionar página

Es muy usual que nuestros plugins permitan añadir imágenes a un determinado elemento, sea una entrada, una página, un tipo… Sin embargo, solemos guardar ese dato como una URL. Lo ideal, desde luego, sería guardar la ID, pero no siempre es así.

¿Por qué guardar la ID en lugar de la URL? Porque la imagen se guarda en WordPress en la tabla “wp_posts”, como un elemento más. Una imagen, o un archivo, se guarda como tipo “attachment”, que viene a ser “adjunto”. Por lo tanto tiene las mismas propiedades que cualquier otro tipo. A partir de su ID, podemos recuperar todos los datos guardados con la imagen: título, meta datos, etc. y también podemos “pedírsela” a WordPress usando un tamaño de los predefinidos. Básicamente podemos hacer todo lo que hacemos con la imagen destacada o “thumbnail” que se asigna a una entrada.

Pero es mucho más fácil guardar la URL que es lo primero que vemos de una imagen que subimos al sistema con el media uploader (hemos hablado de esto en esta otra entrada). Así que, ¿Cómo podemos obtener la ID de una imagen a partir de su URL, para poder trabajar con ella en condiciones?

Lo primero que debemos hacer es incluir esta función en nuestro functions.php, o en nuestro plugin. La he rescatado de los foros de WordPress.org:

Es una funcion muy sencilla que obtiene la ID a partir de la URL de la imagen ($image_src) que es siempre única y se guarda en el campo guid.

¡Bien! Si tenemos la URL de la imagen, y la pasamos por esta función, nos devuelve automáticamente la ID de la imagen. ¿Qué podemos hacer ahora con esto? Pues dos cosas:

  • Podemos usar la función wp_get_attachment_image y dejar que WordPress la imprima en HTML. Establecerá el tamaño (que nosotros especifiquemos), las clases y el atributo alt.

  • Podemos usar la funcion wp_get_attachment_image_src para obtener exclusivamente la URL de la imagen. ¡Espera! ¿Eso no lo teníamos ya? Sí y no. Teníamos la URL de la imagen, pero si hemos incluído algún filtro de tamaño, ahora nos devolverá la URL de la imagen en el tamaño correcto. Como ya sabéis, al subir una imagen a WordPress, el sistema crea copias en tamaños específicos, tamaños que podemos definir nosotros en nuestro plugin o theme, y luego usarlos para que las imagenes encajen perfectamente. Luego podemos recuperar el resto de meta datos y establecerlos a mano.

  • También podemos hacer uso de una función que os presenté hace unos meses en esta entrada, y que imprime directamente la imagen con los atributos title, alt y description.

Como veis, a partir de la ID de la imagen podemos obtener mucha información sobre ella (si la tiene). Por eso es preferible guardar la ID en lugar de la URL, pero como no siempre podemos, ahora ya tenemos una función que nos devuelve la ID a partir de la URL.