it-swarm-eu.dev

Jak načíst Alt Text?

Používám soubor attachment.php k zobrazení velkých verzí obrázků, na které jste klikli jinde. Chci vytáhnout obrázek alt text jako popisek pod obrázkem s javascript, ale alt text není zahrnut, když se používá wp_get_attachment_image_src (). Nemyslím si, že WP má funkci, jak jej získat, takže potřebuji vlastní. Chcete-li napsat tuto funkci, musím vědět ... Kde je uložen alt text pro obrázek?

Stránka s přílohou používá wp_get_attachment_image_src(), která neobsahuje text 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>

Toto ukazuje:

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

Jsem si vědom toho, že $post->post_excerpt je volán ve výše uvedeném kódu, ale nejsem si jistý, co ho nahradit, abych získal atribut alt.

32
kevtrout

Nedávno jsem udělal nějaký výzkum pro klientský projekt lo-and-behold mám ho použít zde!

Po textu uvidíte tříděný seznam většiny (všech?) Funkcí pro zpracování obrazu z aplikace WordPress 3.0.1 (seskupil jsem je do nějakého zdání objednávky, ale v mé kategorizaci není příliš věrohodný).

Mimochodem, odpověď na to, co (myslím), které potřebujete, místo toho, co jste požadovali (v pořádku, odpovím na to taky, na konci) Myslím, že to, co potřebujete, je wp_get_attachment_image() funkce, která vrátí řetězec HTML obsahující tyto atributy:

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

WordPress 3.0 Funkce pro zpracování obrazu

Takže tady jsou WordPress 'funkce pro zpracování obrazu pro vaše a další odkaz (skok níže pro odpověď na vaši přesnou otázku):

Podpora obrázků/miniatury

Příloha

Typy MIME

Nahrávky

Souborový systém

HTML

Nízká úroveň zpracování obrazu:


Jak slíbil Image's 'alt' text je uložen jako řetězec v wp_postmeta s meta_key'_wp_attachment_image_alt'.

Jak již pravděpodobně víte, můžete ho načíst s jednoduchým get_post_meta() takto:

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

53
MikeSchinkel

Zvažte pohled na wp_prepare_attachment_for_js( $attachment ), kde $attachment je objekt WP_Post sám o sobě.

Toto je trochu funkce "kuchyňského dřezu", ale poskytuje velmi pěkný hash s tunou metadat, včetně '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,
    );

To je obzvláště užitečné (jak napovídá název), pro zaslání meta obrázku přílohy do wp.media View via wp_send_ajax(), ale to neznamená, že byste jej nemohli použít pro jiné účely.

Líbí se mi abstrakce od meta pole _wp_attachment_image_alt, v případě, že se metoda načtení alt text vždy změní (nepravděpodobné, ale myslitelné).

Mám však pocit, že existuje metoda pro wp_get_attachment_image_alt() metodu.

5
Tom Auger

Mikeova odpověď je samozřejmě správná, ale $alt_text = get_post_meta($post->ID, '_wp_attachment_image_alt', true); může vrátit prázdný řetězec.

wp_get_attachment_image , ale vždy dostane alt_text.

Tým aplikace Wordpress použije následující trik, nejprve zkontroluje post_except a poté získá titul.

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

Zjistil jsem, že text Alt pro přílohy byl uložen na vlastní meta nazvané "_wp_attachment_image_alt"

Takže když jsem měl Id přílohy, byl jsem schopen dostat alt text s tímto kódem:

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

Pokud používáte WP_Customize_Media_Control () vaše get_theme_mod () vrátí id id, ale pokud používáte nový WP_Customize_Image_Control (), get_theme_mod () vrátí url obrázku, bylo to, jak jsem byl schopen získat alt text z použití WP_Customize_Image_Control ()

Tak jsem to dokázal. Doufám, že to někomu pomůže

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

K Mikeově odpovědi by to někdo mohl najít. Možná budete muset získat konkrétní ID přílohy, takže můžete tak učinit tak, že předáte ID příspěvku do příkladu get_post_thumbnail_id:

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