WordPress obtiene la URL de la imagen (actualmente usando wp_get_attachment_url)

3 minutos de lectura

Tengo un pequeño problema para obtener URL de archivos adjuntos de imágenes en wordpress. Este es mi código hasta ahora:

<?php // find images attached to this post / page.
            global $post;
            $thumb_ID = get_post_thumbnail_id( $post->ID );
            $args = array(
                'post_type' => 'attachment',
                'post_mime_type' => 'image',
                'numberposts' => -1,
                'orderby' => 'menu_order',
                'order' => 'ASC',
                'exclude' => $thumb_ID,
                'post_parent' => $post->ID
            );
            $images = get_posts($args);
            ?>

            <?php // Loop through the images and show them

            if($images)
            {
            foreach($images as $image)  
            {

            echo  wp_get_attachment_image_url($image->ID, $size="attached-image");

            }
            }

?>

Que no devuelve nada. si cambio wp_get_attachment_image_url($image->ID, $size="attached-image"); por wp_get_attachment_image($image->ID, $size="attached-image"); esto funciona bien, pero trae la imagen en lugar de solo la URL.

  • creo que estas buscando wp_get_attachment_url( $id ); o wp_get_attachment_image_src( $attachment_id, $size, $icon ); en cambio, la función que citó no es una función de WP.

    – nombre_usuario_aleatorio

    30 de abril de 2012 a las 19:39


  • lo siento, soy bastante nuevo en php. ¿Cómo usaría este código anterior para recorrer todas las imágenes y generar la URL?

    – Alfazos

    30 de abril de 2012 a las 19:48

  • Después de leer su comentario y su pregunta nuevamente, me di cuenta de que también puede haber algo más: ¿Desea todas las imágenes ADJUNTAS, o SOLO desea la imagen destacada? Tu codigo get_post_thumbnail_id solo obtiene la imagen destacada. Su comentario sugiere que desea ver todas las imágenes de esa publicación, ¿es así?

    – nombre_usuario_aleatorio

    30 de abril de 2012 a las 19:51

  • Sí, intento obtener las URL de las imágenes adjuntas, excepto la imagen destacada. Logré lograr esto justo después de publicar, usando $attachment_id = $image->ID; // attachment ID $image_attributes = wp_get_attachment_image_src( $attachment_id, 'full', false ); // returns an array echo '<img src="'; echo $image_attributes[0]; echo '">';

    – Alfazos

    30 de abril de 2012 a las 20:02


El siguiente código recorrerá todos los archivos adjuntos de imágenes y generará la URL src. Tenga en cuenta que se muestran dos métodos, según sus necesidades.

<?php

    global $post;
    $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_mime_type' => 'image', 'post_status' => null, 'post_parent' => $post->ID ); 
    $attachments = get_posts($args);
    if ($attachments) {
            foreach ( $attachments as $attachment ) {
                    // Method #1: Allows you to define the image size
                    $src = wp_get_attachment_image_src( $attachment->ID, "attached-image");
                    if ($src) {echo $src[0];}
                    // Method #2: Would always return the "attached-image" size
                    echo $attachment->guid;
            }
    }

?>

  • ¡Gracias! Logré lograr algo similar usando wp_get_attachment_src, pero de una manera ligeramente diferente. Tu camino es más limpio, ¡así que gracias!

    – Alfazos

    30 de abril de 2012 a las 20:08

  • la propiedad GUID de un archivo adjunto es solo eso, un GUID: no debe tratarse como una URL para usar en cualquier lugar. Esa última línea ‘echo $attachment->guid’ puede superar las URL que en realidad no serán la URL real. Ver pods.io/2013/07/17/dont-use-the-guid-field-nunca-nunca-nunca

    – Voluntad

    10 de marzo de 2015 a las 18:24


¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad