it-swarm.asia

Resim Ekinin Alt Metni Nasıl Alınır?

Başka bir yere tıklanan görüntülerin büyük versiyonlarını göstermek için attachment.php dosyasını kullanıyorum. Javascript ile görüntünün altında resim alt metni olarak resim çekmek istiyorum, ancak wp_get_attachment_image_src () kullanıldığında alt metin dahil edilmez. WP'in onu almak için bir işlevi olduğunu sanmıyorum, bu yüzden kendime ihtiyacım var. Bu işlevi yazmak için bilmem gerekenler ... Bir görüntünün alt metni nerede saklanır?

Ek sayfam, alt metni içermeyen wp_get_attachment_image_src() işlevini kullanır.

<div class = "entry">
<?php 
if ( wp_attachment_is_image( $post->id ) ) : 
    $att_image = wp_get_attachment_image_src( $post->id, "large");?>

    <a href="<?php echo wp_get_attachment_url($post->id); ?>" 
        title="<?php the_title(); ?>" 
        rel="attachment">
    <img class="attached_img" 
        src="<?php echo $att_image[0];?>" 
        width="<?php echo $att_image[1];?>" 
        height="<?php echo $att_image[2];?>"  
        class="attachment-medium" 
        alt="<?php $post->post_excerpt; ?>" />
    </a> 
} <?php endif;?>
</div>

Bu gösterir ki:

<div class = "entry">
    <a href="http://www.example.com/wp-content/uploads/2010/07/photo_namejpg" 
       title="My_Photo_Title" 
       rel="attachment">
       <img class="attached_img" 
            src="http://www.example.com/wp-content/uploads/2010/07/photo_name_and_size.jpg" 
            width="393" 
            height="500"  
            class="attachment-medium" 
            alt="" />
    </a>
</div>  

$post->post_excerpt öğesinin yukarıdaki kodda çağrıldığının farkındayım, ancak görüntünün alt özelliğini almak için neyle değiştirileceğinden emin değilim.

32
kevtrout

Geçenlerde bir müşteri projesi için biraz araştırma yaptım bu yüzden bak ve bak burada kullanmaya başladım!

Metinden sonra, WordPress 3.0.1 içinden görüntü işleme işlevlerinin çoğunun (tümü?) Kategorize edilmiş bir listesini göreceksiniz (Bunları bir miktar düzende gruplandırdım, ancak kategorizasyonumda çok fazla güvende olma.)

Neyse,ne istediğini (sanırım) istediğini yerine ihtiyacın olanı)(tamam, ben de sonunda cevaplayacağım) sanırım İhtiyacınız olan, bu özellikleri içeren bir HTML dizgisi döndürecek wp_get_attachment_image() işlevidir:

  • , 'src'
  • , 'class'
  • 'alt' ve
  • 'title'.

WordPress 3.0 Görüntü İşleme İşlevleri

Öyleyse işte ve diğerlerinin referansı için WordPress'in görüntü işleme işlevleri (tam sorunuzun cevabını aşağıya atlayın):

Görüntü Desteği/Küçük Resimler

Ek dosya

MIME Türleri

Yüklemeler

Dosya sistemi

HTML

Düşük Seviyeli Görüntü İşleme:


Söz geldiği gibi, Resmin 'alt' metni, wp_postmeta'da '_wp_attachment_image_alt'meta_keyiyle bir dize olarak depolanır.

Muhtemelen zaten bildiğiniz gibi bunu gibi basit bir get_post_meta() ile yükleyebilirsiniz:

$alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true);

53
MikeSchinkel

wp_prepare_attachment_for_js( $attachment ) 'a bakmayı düşünün, burada $attachment, ekin WP_Post nesnesidir.

Bu, bir "mutfak lavabosu" işlevinin bir parçasıdır, ancak 'alt' da dahil olmak üzere bir ton meta veri içeren çok güzel bir karma sağlar:

$response = array(
        'id'          => $attachment->ID,
        'title'       => $attachment->post_title,
        'filename'    => wp_basename( $attachment->guid ),
        'url'         => $attachment_url,
        'link'        => get_attachment_link( $attachment->ID ),
        'alt'         => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ),
        'author'      => $attachment->post_author,
        'description' => $attachment->post_content,
        'caption'     => $attachment->post_excerpt,
        'name'        => $attachment->post_name,
        'status'      => $attachment->post_status,
        'uploadedTo'  => $attachment->post_parent,
        'date'        => strtotime( $attachment->post_date_gmt ) * 1000,
        'modified'    => strtotime( $attachment->post_modified_gmt ) * 1000,
        'menuOrder'   => $attachment->menu_order,
        'mime'        => $attachment->post_mime_type,
        'type'        => $type,
        'subtype'     => $subtype,
        'icon'        => wp_mime_type_icon( $attachment->ID ),
        'dateFormatted' => mysql2date( get_option('date_format'), $attachment->post_date ),
        'nonces'      => array(
            'update' => false,
            'delete' => false,
            'edit'   => false
        ),
        'editLink'   => false,
        'meta'       => false,
    );

Bu özellikle (adından da anlaşılacağı gibi), ek görüntüsü meta wp.media View'a wp_send_ajax() yoluyla göndermek için kullanışlıdır, ancak bu başka amaçlarla kullanamayacağınız anlamına gelmez.

Alt metni alma yönteminin hiç değişmemesi durumunda (olası değil, akla gelebilecek), _wp_attachment_image_alt post meta alanından soyutlamayı seviyorum.

Bununla birlikte wp_get_attachment_image_alt() yöntemi için bir durum olduğunu hissediyorum.

5
Tom Auger

Mike'ın cevabı elbette doğrudur, fakat $alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true); boş bir dize döndürebilir.

wp_get_attachment_image , ancak her zaman bir alt_text alır.

Wordpress ekibi ilk önce post_except'i kontrol ettikten sonra unvanı alarak aşağıdaki numarayı uygular.

if(empty($alt_text)) // If not, Use the Caption
{
    $attachment = get_post($post->ID);
    $alt_text = trim(strip_tags( $attachment->post_excerpt ));
}
if(empty($alt_text)) // Finally, use the title
{ 
    $attachment = get_post($post->ID);
    $alt_text = trim(strip_tags( $attachment->post_title )); 
}
4
GUI Junkie

Ekler için Alt metninin "_wp_attachment_image_alt" adlı özel bir metada depolandığını öğrendim.

Böylece, ekin kimliğini alarak, alt metni şu kodla bulabildim:

<?php echo get_post_meta($attachment_id, '_wp_attachment_image_alt', true) ?>
2
chilljul

WP_Customize_Media_Control () kullanıyorsanız, get_theme_mod (), post kimliğini döndürür, ancak yeni WP_Customize_Image_Control () kullanıyorsanız, get_theme_mod (), image url değerini döndürür; ()

İşte bunu yapabildim. Umarım bu orada birine yardım eder

// This is getting the image / url
$feature1 = get_theme_mod('feature_image_1');

// This is getting the post id
$feature1_id = attachment_url_to_postid($feature1);

// This is getting the alt text from the image that is set in the media area
$image1_alt = get_post_meta( $feature1_id, '_wp_attachment_image_alt', true );

Markup

<a href="<?php echo $feature1_url; ?>"><img class="img-responsive center-block" src="<?php echo $feature1; ?>" alt="<?php echo $image1_alt; ?>"></a>
0
DevTurtle

Mike'ın cevabına eklemek için birileri bunu yararlı bulabilir. Ekin belirli bir kimliğini almanız gerekebilir, bu nedenle Posta Kimliğini get_post_thumbnail_id örneğine ileterek yapabilirsiniz:

  $the_img = wp_get_attachment_image( get_post_thumbnail_id( get_the_ID() ) );
0
Uriahs Victor