it-swarm-id.com

Bagaimana Cara Mengambil Teks Alt Lampiran Gambar?

Saya menggunakan file attachment.php untuk menampilkan versi besar dari gambar yang telah diklik di tempat lain. Saya ingin menarik teks alt gambar sebagai teks di bawah gambar dengan javascript, tetapi teks alt tidak disertakan ketika ketika wp_get_attachment_image_src () digunakan. Saya tidak berpikir WP memiliki fungsi untuk mengambilnya, jadi saya membutuhkannya sendiri. Untuk menulis fungsi itu, saya perlu tahu ... Di mana teks alt untuk gambar disimpan?

Halaman lampiran saya menggunakan wp_get_attachment_image_src(), yang tidak termasuk teks alt.

<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>

Pertunjukan ini:

<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>  

Saya sadar bahwa $post->post_excerpt dipanggil dalam kode di atas, tetapi saya tidak yakin harus menggantinya dengan apa untuk mendapatkan atribut alt gambar.

32
kevtrout

Saya baru-baru ini melakukan riset untuk proyek klien baru-baru ini jadi lihat-lihat Saya bisa menggunakannya di sini!

Setelah teks Anda akan melihat daftar sebagian besar (semua?) Dari fungsi penanganan gambar dari dalam WordPress 3.0.1 (Saya mengelompokkannya dalam beberapa urutan urutan tetapi jangan terlalu percaya pada kategorisasi saya.)

Pokoknya,menjawab apa (saya pikir) yang Anda butuhkan daripada apa yang Anda minta(oke, saya akan jawab juga, di akhir) yang Anda butuhkan adalah fungsi wp_get_attachment_image() yang akan mengembalikan string HTML yang berisi atribut ini:

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

Fungsi Penanganan Gambar WordPress 3.0

Jadi, inilah fungsi penanganan gambar WordPress untuk referensi Anda dan orang lain (lompat ke bawah untuk jawaban atas pertanyaan persis Anda):

Dukungan Gambar/Gambar Kecil

Lampiran

Jenis MIME

Unggah

Berkas sistem

HTML

Penanganan Gambar Tingkat Rendah:


Seperti dijanjikan Teks 'alt' gambar disimpan sebagai string dalam wp_postmeta dengan meta_key '_wp_attachment_image_alt'.

Seperti yang mungkin sudah Anda ketahui, Anda dapat memuatnya dengan get_post_meta() sederhana seperti:

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

53
MikeSchinkel

Pertimbangkan untuk melihat wp_prepare_attachment_for_js( $attachment ), di mana $attachment adalah objek WP_Post dari lampiran itu sendiri.

Ini sedikit fungsi "kitchen sink", tetapi memang memberikan hash yang sangat bagus dengan satu ton metadata, termasuk 'alt':

$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,
    );

Ini sangat berguna (seperti namanya), untuk mengirim meta gambar lampiran ke tampilan wp.media via wp_send_ajax(), tetapi itu tidak berarti Anda tidak dapat menggunakannya untuk tujuan lain.

Saya suka abstrak jauh dari bidang meta posting _wp_attachment_image_alt, kalau-kalau metode untuk mengambil teks alt pernah berubah (tidak mungkin, tetapi bisa dibayangkan).

Saya merasa bahwa ada kasus untuk metode wp_get_attachment_image_alt().

5
Tom Auger

Mike's jawaban sudah benar, tentu saja, tetapi $alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true); dapat mengembalikan string kosong.

wp_get_attachment_image , namun, selalu mendapatkan alt_text.

Tim Wordpress menerapkan trik berikut, pertama, memeriksa post_except, lalu mendapatkan judul.

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

Saya menemukan bahwa teks Alt untuk lampiran disimpan pada meta khusus yang disebut "_wp_attachment_image_alt"

Jadi memiliki ID lampiran, saya bisa mendapatkan teks alt dengan kode ini:

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

Jika Anda menggunakan WP_Customize_Media_Control () get_theme_mod () Anda akan mengembalikan id posting tetapi jika Anda menggunakan WP_Customize_Image_Control () get_theme_mod () akan mengembalikan url gambar ini adalah bagaimana saya bisa mendapatkan teks alt dari menggunakan WP_Customize_mage_mage_mage_mage_mage_mage_mode ()

Inilah cara saya bisa melakukannya. Semoga ini bisa membantu seseorang di luar sana

// 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

Untuk menambah jawaban Mike, seseorang mungkin menganggap ini berguna. Anda mungkin perlu mendapatkan ID spesifik lampiran, sehingga Anda dapat melakukannya dengan mengirimkan ID Posting ke get_post_thumbnail_id contoh:

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