2013-06-21 3 views
4

Я работаю над сайтом WP с некоторыми слайдерами продвижения/рекламы с событием клика Google Analytics. Отлично работает, теперь я хочу служить правильному изображению на правильном разрешении.Получить исходный код изображения по ID

Я использую picturefill для обслуживания изображений. Работает нормально, а жестко закодировано, поэтому я знаю, что он работает. Когда я пытаюсь получить источники изображений с изображениями, загруженными WP, это не так. Я знаю это из-за моих (недостающих) навыков php.

Какие picturfill потребности:

<span data-picture data-alt=""> 
    <span data-src="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> 

я или URL-адрес или идентификатор или изображение, хранящееся в: $ attachment_id

Я думал, как это сделать:

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

?> 

В get_field ('advimg'); от ACF.

<span data-picture data-alt=""> 
    <span data-src="<?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="<?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> 

Но это не работает. Iv'e играл с:

wp_get_attachment_image_src wp_get_attachment_image_url wp_get_attachment_image_link

Я должен быть имеющий пятниц, из-за него не работает, и что-то говорит мне, что это не так сложно ... им просто не видя это сегодня.

надеялся, что вы, ребята, могли бы передать в.

Спасибо заранее,

/Paul

ИЗМЕНИТЬ/FINAL КОД/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="<?php echo $default[0]; ?>"></span> 
    <span data-src="<?php echo $small[0]; ?>" data-media="(min-width: 400px)"></span> 
    <span data-src="<?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="<?php echo $default[0]; ?>" alt="alt desc here"> 
    </noscript> 
</span> 

ответ

11

wp_get_attachment_image_src смешения имени. (Лучшее имя для него будет wp_get_attachment_image_atts). Он фактически возвращает массив с атрибутами изображения «url», «width» и «height» файла вложения изображения. Для только СРК изображения, использовать первый элемент в возвращаемом массиве:

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

Кроме того, убедитесь, что ACF изображение типа возвращаемого поля установлен крепежным ID, так что $attachment_id = get_field('advimg'); дает идентификатор, который вы ожидаете.

+0

спасибо! +1 для подробного ответа. Я проверю это в понедельник, дам вам знать! – Kortschot

+0

ах да чувак! здорово! Ill изменить/добавить готовый код! – Kortschot