web-dev-qa-db-fra.com

Ajout d'une image d'élément de schéma à the_post_thumbnail avec des filtres

J'ai essayé d'appliquer des filtres à la fonction the_post_thumbnail () en utilisant

apply_filters( 'post_thumbnail_html', $html, $post_id, $post_thumbnail_id, $size, $attr );

Voici le code que je suis venu avec mais ne semble pas fonctionner complètement

    function red_adjust_image_schema($html, $id, $caption, $title, $align, $url, $size, $alt) 
{
    $html = '<div class="image-container" itemprop="image">'. $html . '</div>';

    return $html;
}
add_filter('post_thumbnail_html', 'red_adjust_image_schema', 20, 8);

Comment puis-je ajouter itemprop = "image" à l'élément d'image réel pour qu'il s'enregistre correctement? À l'heure actuelle, il semble que je ne peux faire qu'un conteneur et envelopper $ html?

Merci

2
Ryan Dennler

Vous avez simplement les mauvais arguments (y compris la liste).

$caption, $title, $align, $url, $alt

sont trop là-dedans.

Et $attr est manquant. Ce n’est pas important de savoir comment vous nommez les vars (tant qu’ils commencent par un caractère), mais c’est plus facile à lire pour les lecteurs ultérieurs.

function wpse76536_image_schema( $html, $post_id, $post_thumbnail_id, $size, $attr ) 
{
    return "<div class='image-container' itemprop='image'>{$html}</div>";
}
add_filter( 'post_thumbnail_html', 'wpse76536_image_schema', 10, 5 );
3
kaiser

Vous pouvez simplement ajouter un nouvel attribut:

add_filter('wp_get_attachment_image_attributes', 'ipwp_img_attr', 10, 2);
    function ipwp_img_attr($attr) {
    $attr['itemprop'] = 'image';
    return $attr;
}

De cette façon, il n'y aura qu'un nouvel attribut, sans qu'il soit nécessaire de rechercher et de remplacer du code - Voir ma version précédente:

add_filter('post_thumbnail_html','mediaboxlv_image_itemprop',10,3 );
function mediaboxlv_image_itemprop($html, $post_id, $post_image_id){
    $html = str_replace('src',' itemprop="image" src',$html);
    return $html;
}
2
Rolands Umbrovskis