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
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 );
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;
}