web-dev-qa-db-fra.com

Quelle est la bonne manière d'utiliser le filtre get_image_tag?

J'essaie de supprimer l'attribut title pour les vignettes de publication (sur certaines publications), et je suppose que le filtre get_image_tag est le moyen de le faire. Cependant, ce que j'ai jusqu'à présent ne fonctionne pas. Que dois-je changer pour que cela fonctionne? Mon code:

add_filter('get_image_tag', 'image_no_title');
function image_no_title($title) {
    $title = '';
    return $title;
}

Et la fonction pertinente (de wp-includes/media.php):

function get_image_tag($id, $alt, $title, $align, $size='medium') {

    list( $img_src, $width, $height ) = image_downsize($id, $size);
    $hwstring = image_hwstring($width, $height);

    $class = 'align' . esc_attr($align) .' size-' . esc_attr($size) . ' wp-image-' . $id;
    $class = apply_filters('get_image_tag_class', $class, $id, $align, $size);

    $html = '<img src="' . esc_attr($img_src) . '" alt="' . esc_attr($alt) . '" title="' . esc_attr($title).'" '.$hwstring.'class="'.$class.'" />';

    $html = apply_filters( 'get_image_tag', $html, $id, $alt, $title, $align, $size );

    return $html;
}
1
Travis Northcutt

Grâce à Rarst indiquant que je n'étais pas au bon endroit, j'ai creusé un peu plus et je me suis retrouvé avec ceci:

add_filter('wp_get_attachment_image_attributes', 'wpse_19029_no_image_title');

function wpse_19029_no_image_title ($attr) 
{
    unset($attr['title']);
    return $attr;
}
3
Travis Northcutt

Le filtre affecte toujours le premier argument, les autres informations sont présentes et ne sont même pas transmises par défaut.

add_filter('get_image_tag', 'image_no_title', 10, 4);

function image_no_title( $html, $id, $alt, $title ) {

    return str_replace("title=\"{$title}\"", '', $html);
}
2
Rarst

J'ai eu le même problème où je devais ajouter une classe à l'attribut de classe post image existant. Mon code était correct, selon votre exemple, mais je ne comprenais pas pourquoi la classe ne mettait pas à jour.

Ce que j'ai fait est de réinsérer les images de la médiathèque dans les articles/pages (pour les images en vedette et les champs personnalisés) une fois l'action et le filtre prêts.

C'est en fait assez logique ... J'ai réalisé que la publication est stockée dans la base de données, puis extraite pour générer le code HTML pour le 'front-end' du site, mais aucune modification n'a été apportée à l'entrée de la base de données; je ne pouvais donc pas attendez-vous à ce que les modifications soient immédiatement visibles sur le site!

1
benna