web-dev-qa-db-fra.com

Supprimer l'attribut title des images

Je cherche un moyen de supprimer l'attribut title des images, de préférence en utilisant un crochet ou un filtre.

La plupart des clients ne se donnent pas la peine de donner aux images un titre propre, éliminant ainsi le but de cet attribut. Je préfère aucune infobulle à celle aléatoire, non descriptive.

3
heintore

Je voudrais fortement décourager cela. Une meilleure pratique, plus durable, serait d’éduquer vos clients sur la valeur de l’attribut title et de leur apprendre à l’utiliser correctement.

Le retirer consiste simplement à mettre un pansement sur le symptôme, pas à combattre la maladie.

Cependant, si vous voulez quand même supprimer l'attribut, vous pouvez le faire de plusieurs manières:

Utiliser un filtre de contenu

Le contenu de la publication passe par un filtre avant d'être affiché à l'écran. Ce filtre remplit plusieurs fonctions: transformer les guillemets en guillemets bouclés, mettre le P en majuscule dans WordPress, etc. Il gère également les codes courts présents dans le contenu.

Vous pouvez transmettre votre contenu via un filtre qui utilise des expressions régulières pour rechercher les balises <img /> et supprimer l'attribut title.

Utiliser un plug-in

Une recherche rapide dans le référentiel de plug-ins a retourné Img Title Removal , un plug-in qui prétend faire exactement ce que vous voulez. Un rapide coup d'œil au code montre qu'il fait l'option 1 exactement:

<?php
/*
Plugin Name: Img Title Removal
Plugin URI: http://www.glauserconsulting.com/2008/11/nu-agency/
Description: Filter plugin that removes all title tags from images in posts.
Author: Ivan Glauser
Version: 0.2.1
Author URI: http://www.glauserconsulting.com
*/

add_filter('the_content', 'remove_img_titles');

function remove_img_titles($text) {

    // Get all title="..." tags from the html.
    $result = array();
    preg_match_all('|title="[^"]*"|U', $text, $result);

    // Replace all occurances with an empty string.
    foreach($result[0] as $img_tag) {
        $text = str_replace($img_tag, '', $text);
    }

    return $text;
}
?>

Utiliser JavaScript

Une troisième option serait de supprimer dynamiquement les attributs title après leur rendu sur la page. Si vous les supprimez absolument devez, c'est le système que je vous recommanderais, car la title sera toujours dans le code HTML (pour les lecteurs d'écran), mais sera supprimée lors du chargement du document afin d'éviter le , non descriptives "info-bulles.

Avec jQuery, vous pouvez sélectionner tous les éléments <img /> de la page ayant un attribut title et les supprimer. Exemple:

jQuery(document).ready(function($) {
    $('img[title]').each(function() { $(this).removeAttr('title'); });
});
9
EAMann

Voici une solution non-js sans pirater le coeur, essayez ceci dans votre fichier themes function.php.

add_filter( 'wp_get_attachment_image_attributes', 'remove_image_text' );
function remove_image_text( $attr ) {
    unset( $attr['alt'] );
    unset( $attr['title']) ;
    return $attr;
}
2
ntft