Holen Sie sich die Bildquelle nach ID mit Größe

Lesezeit: 3 Minuten

Benutzeravatar von Kortschot
Kortschot

Ich arbeite an einer WP-Site mit einigen Promotion-/Anzeigen-Schiebereglern mit einem Google Analytics-Klickereignis. Funktioniert super, jetzt möchte ich das richtige Bild in der richtigen Auflösung liefern.

Ich benutze bildfüllend zum Bereitstellen der Bilder. Funktioniert gut, während es fest codiert ist, also weiß ich, dass es funktioniert. Wenn ich versuche, die Bildquellen mit von WP hochgeladenen Bildern abzurufen, ist dies nicht der Fall. Ich weiß es aufgrund meiner (mangelnden) PHP-Kenntnisse.

Was Picturefill braucht:

<span data-picture data-alt="">
    <span data-src="https://stackoverflow.com/questions/17233618/filename_default.jpg"></span>
    <span data-src="filename_small.jpg" data-media="(min-width: 400px)"></span>
    <span data-src="filename_medium.jpg" data-media="(min-width: 768px)"></span>
    <span data-src="filename_big.jpg" data-media="(min-width: 1200px)"></span>

    <!-- Fallback content for non-JS browsers. -->
    <noscript>
        <img src="external/imgs/small.jpg" alt="">
    </noscript>
</span>

Ich habe entweder die URL oder die ID oder das Bild gespeichert in: $attachment_id

Ich dachte, das zu tun:

<?php
    $attachment_id = get_field('advimg');
    $large = "adv-pos-a-large";
    $default = "adv-pos-a-default";
    $small = "adv-pos-a-small";

?>

Das get_field(‘advimg’); ist von ACF.

<span data-picture data-alt="">
    <span data-src="https://stackoverflow.com/questions/17233618/<?php wp_get_attachment_image_src( $attachment_id, $default ); ?>"></span>
    <span data-src="<?php wp_get_attachment_image_src( $attachment_id, $small ); ?>" data-media="(min-width: 400px)"></span>
    <span data-src="https://stackoverflow.com/questions/17233618/<?php wp_get_attachment_image_src( $attachment_id, $default ); ?>" data-media="(min-width: 768px)"></span>
    <span data-src="<?php wp_get_attachment_image_src( $attachment_id, $large ); ?>" data-media="(min-width: 1200px)"></span>

    <!-- Fallback content for non-JS browsers. -->
    <noscript>
        <img src="external/imgs/small.jpg" alt="">
    </noscript>
</span>

Aber es funktioniert nicht. Ich habe herumgespielt mit:

wp_get_attachment_image_src wp_get_attachment_image_url wp_get_attachment_image_link

Ich muss freitags haben, weil es nicht funktioniert und etwas sagt mir, dass es nicht so schwer ist … ich sehe es heute nur nicht.

Ich hatte gehofft, ihr könntet mit anpacken.

Danke im Voraus,

/ Paul

BEARBEITEN / ENDCODE / FIX

<?php 
    $attachment_id = get_field('advanced_custom_field_name_here');
    $small = wp_get_attachment_image_src( $attachment_id, 'adv-pos-a-small' );
    $default = wp_get_attachment_image_src( $attachment_id, 'adv-pos-a-default' );
    $large = wp_get_attachment_image_src( $attachment_id, 'adv-pos-a-large' );
?> 

<span data-picture data-alt="alt desc here">
    <span data-src="https://stackoverflow.com/questions/17233618/<?php echo $default[0]; ?>"></span>
    <span data-src="<?php echo $small[0]; ?>" data-media="(min-width: 400px)"></span>
    <span data-src="https://stackoverflow.com/questions/17233618/<?php echo $default[0]; ?>" data-media="(min-width: 768px)"></span>
    <span data-src="<?php echo $large[0]; ?>" data-media="(min-width: 1200px)"></span>

    <!-- Fallback content for non-JS browsers. Same img src as the initial, unqualified source element. -->
    <noscript>
        <img src="https://stackoverflow.com/questions/17233618/<?php echo $default[0]; ?>" alt="alt desc here">
    </noscript>
</span>

wp_get_attachment_image_src ist verwirrend benannt. (Ein besserer Name dafür wäre wp_get_attachment_image_atts). Es gibt tatsächlich ein Array mit den Bildattributen “url”, “width” und “height” einer Bildanhangsdatei zurück. Verwenden Sie für nur die Bildquelle das erste Element im zurückgegebenen Array:

$img_atts = wp_get_attachment_image_src( $attachment_id, $default );
$img_src = $img_atts[0];

Stellen Sie außerdem sicher, dass der Rückgabetyp Ihres ACF-Bildfelds auf Anhangs-ID eingestellt ist, damit $attachment_id = get_field('advimg'); gibt Ihnen die ID, die Sie erwarten.

  • Danke! +1 für die ausführliche Antwort. Ich schaue am Montag nach, gebe Bescheid!

    – Kortschot

    22. Juni 2013 um 6:26 Uhr

1396140cookie-checkHolen Sie sich die Bildquelle nach ID mit Größe

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy