web-dev-qa-db-fra.com

get_the_post_thumbnail () ne prend pas d'attribut de style

Cela semble être facile, mais cela me fait passer des moments difficiles. get_the_post_thumbnail () suppose de prendre un attribut sous forme de tableau. Eh bien, tout fonctionne bien, mais quand je passe le style attr son ne fonctionne pas.

$attr = array(
                                'title' => get_the_title(),
                                'alt' => get_the_title(),
                                'style' => 'float:left'
                            );

$thumb = get_the_post_thumbnail($post->ID, 'large-thumb', $attr);

Le titre et l'attribut alt sont bien configurés, mais l'attribut style manque dans les images.

FYI: Je montre la vignette dans le flux RSS.

4
Sisir

get_the_post_thumbnail attribut array ne sait pas STYLE, les champs que vous pouvez utiliser sont les suivants:

  • src
  • class
  • alt
  • title

utilisez donc simplement la classe et définissez-la comme suit:

$attr = array(
                                'title' => get_the_title(),
                                'alt' => get_the_title(),
                                'class' => 'rss_thumb'
                            );
$thumb = get_the_post_thumbnail($post->ID, 'large-thumb', $attr);

puis définissez le style dans la classe:

<style>
.rss_thumb{float:left}
</style>

Mettre à jour:

Mon mauvais flux RSS peut vraiment être stylé comme HTML car ce n'est pas HTML. donc pour résoudre ce problème, vous devez avoir votre image dans la balise content et lui donner un align = "left" qui devrait fonctionner dans la plupart des lecteurs rss.

donc ce que vous voulez vraiment, c'est ajouter un content_filter

add_filter('the_content','add_rss_thumb');

function add_rss_thumb($content){
    if (!is_feed()){
        return $content;
    }

    //now that we know is a feed we add the image to the content:
    global $post;
    if(has_post_thumbnail()) {
        $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
        $thumbnail_attributes = wp_get_attachment_image_src( $post_thumbnail_id );
        /*
            $thumbnail_attributes is an array containing: 
            [0] => url
            [1] => width
            [2] => height 
        */

        return '<img src="'.thumbnail_attributes[0].'" title="'.the_title_attribute('','',0).'" alt="'.the_title_attribute('','',0).'" align="left">'.$content;
    }
    return $content;
}
5
Bainternet

Je suis tombé sur une bonne solution plus globale pour cela sur le blog d'Isabel Castillo, en utilisant le filtre wp_get_attachment_image_attributes:

function isa_add_img_title( $attr, $attachment = null ) {
    $attr['title'] = trim( strip_tags( $attachment->post_title ) );
    return $attr;
}
add_filter( 'wp_get_attachment_image_attributes','isa_add_img_title', 10, 2 );

De cette façon, vous pouvez également ajouter d’autres attributs (par exemple, data-caption).

Code original sur http://isabelcastillo.com/add-title-attribute-wordpress-image-thumbnail

2
Celso Bessa