wake-up-neo.net

verwenden Sie wp_get_attachment_image (), um Anhänge anzuzeigen

Ich hoffe wirklich, dass dies ein Facepalm-Moment ist, b/c ich bin damit frustriert. Erstellen Sie eine schnelle Schleife, um bestimmte Anhangsbilder anzuzeigen. hat es fast direkt aus dem Codex entfernt, aber wp_get_attachment_image () verhält sich nicht so, wie ich es erwartet hätte.

ist der ID-Teil des wp_get_attachment_image nicht die ID des Anhangs? Entspricht das nicht der Beitrags-ID des Anhangs?

$args = array(
        'post_type' => 'attachment',
        'post_mime_type' => array('image','image/jpeg','image/png','image/gif'),
        'numberposts' => 5,
        'order' => 'ASC',
        'orderby' => 'post_title'
    );


$attachments = get_posts( $args );
     if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
           echo wp_get_attachment_image( $attachment->ID, 'full' , true);
           echo '<p>' . $attachment->post_title . '</p>';
          }
     }

druckt die Beitragstitel aus, aber keine Bilder.

EDIT 1: Ja, ich bekomme definitiv Beiträge mit meinen get_posts

etwas mehr Debugging:

$attachments = get_posts( $args );
     if ( $attachments ) {
        foreach ( $attachments as $attachment ) {
           $image= wp_get_attachment_image( $attachment->ID, 'thumbnail' , false, array( 'id' => $attachment->ID ));
           echo $image;
           print_r(wp_get_attachment_image_src( $attachment->ID, 'thumbnail' , false, array( 'id' => $attachment->ID )));
           echo var_export($image);
           echo '<p>' . $attachment->post_title . '</p>';
          }
     }
}

gibt dies zurück:

Array ( [0] => http://localhost/multi/wp-content/uploads/2011/11/FabricColllFabrics-150x150.jpg [1] => 100 [2] => 100 [3] => 1 ) 
false
FabricColllFabrics

für das erste Bild ... also findet wp_get_attachment_image_src die Quelle korrekt, aber wp_get_attachment_image gibt anscheinend false zurück?

edit 2: und da ist das Gesicht, auf das ich gewartet habe

irgendwann muss ich etwas debuggt haben und aus wem weiß ich, warum ich ein

function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) {
  return false;

gleich am anfang von wp_get_attachment_image

das ist alles localhost-Zeug, und ich hacke normalerweise nicht im Kern, aber ich denke, irgendwann war ich da drin und habe wahrscheinlich versucht, etwas zurückzuverfolgen und habe vergessen, nach mir selbst aufzuräumen. Epos scheitern.

1
helgatheviking

Lösung: Das Gesicht Palm, auf das ich gewartet habe

irgendwann muss ich etwas debuggt haben und aus wem weiß ich, warum ich ein

function wp_get_attachment_image_src($attachment_id, $size='thumbnail', $icon = false) {
  return false;

gleich am anfang von wp_get_attachment_image

das ist alles localhost-Zeug, und ich hacke normalerweise nicht im Kern, aber ich denke, irgendwann war ich da drin und habe wahrscheinlich versucht, etwas zurückzuverfolgen und habe vergessen, nach mir selbst aufzuräumen. Epos scheitern.

0
helgatheviking

Sie erhalten offensichtlich Daten für $attachments = get_posts() zurück. Andernfalls könnten Sie $attachment->post_title nicht ausgeben. Das Problem muss liegt also bei Ihrem wp_get_attachment_image()-Aufruf.

Das erste, was ich überprüfen würde, ist: Warum setzen Sie den Parameter $icon auf true? Dieser Parameter soll anstelle des eigentlichen Anhangsbilds ein MIME-Symbol ausgeben. Setzen Sie ihn auf false (oder lassen Sie den Parameter ganz weg, da false die Standardeinstellung ist).

Ansonsten ist es ein langer Weg, aber versuchen Sie, full wegzulassen, und lassen Sie wp_get_attachment_image() versuchen, die Standardbildgröße thumbnail auszugeben.

2
Chip Bennett

Problem beim Debuggen:

Wenn Sie var_export() das Ergebnis von $image = wp_get_attachment_image( $attachment->ID, 'full' , true); und string(0) erhalten, wird es einfach übersprungen, da das Bild nicht empfangen wurde.

Debuggen tiefer:

Fügen Sie einfach das vierte Argument als Array zu wp_get_attachment_image() hinzu: array( 'id' => $attachment->ID ); und versuche dann folgendes in deiner functions.php Datei:

function debug_img_atts( $attr, $attachment )
{
    echo '<pre>';
    var_dump( $attr );
    var_dump( $attachment );
    echo '<pre>';
}
add_filter( 'wp_get_attachment_image_attributes', 'debug_img_atts', 20, 2 );

und sehen Sie nach, ob Ihre ID die aus Ihren Anhängen ist.

Ein anderes Problem könnte sein, dass Ihre Bildgröße nicht registriert ist. Die Standardbildgröße ist "Miniaturansicht". Versuchen Sie, das 3. Argument leer zu lassen, und verwenden Sie dann add_theme_support( 'post-thumbnails' ); für die Datei functions.php, um zu sehen, ob Sie eine Ausgabe erhalten.

Sie können auch versuchen, var_dump( wp_get_attachment_image_src( $attachment->ID ) ); zu verwenden.

Eine letzte Lösung wäre, einfach den Parameter post_mime_type wegzulassen und zu überprüfen, um welchen MIME-Typ es sich bei dem tatsächlichen Anhang handelt, bevor Sie ihn wieder in Ihre Abfrage einfügen. Verwenden Sie var_dump( get_post_mime_type( $attachment->ID ) ); , um es zu überprüfen

1
kaiser