Eliminar el atributo title de las imágenes

30 dic 2010, 16:36:17
Vistas: 34.2K
Votos: 4

Estoy buscando una manera de eliminar el atributo title de las imágenes, preferiblemente mediante el uso de un hook o un filtro.

La mayoría de los clientes no se molestan en dar a las imágenes un título apropiado, lo que elimina el propósito de este atributo. Prefiero no tener tooltips a tener unos aleatorios y no descriptivos.

1
Comentarios

Sí, me preguntan esto mucho, aunque no es la mejor práctica, a algunos clientes no les importa. Uso el método de JavaScript que aparece abajo, por si cambian de opinión más adelante. (+1 por ser una pregunta válida, aunque no sea la mejor idea...)

addedlovely addedlovely
17 jun 2011 12:46:07
Todas las respuestas a la pregunta 3
5

Yo desaconsejaría fuertemente esto. Una práctica mejor y más sostenible sería educar a tus clientes sobre el valor del atributo title y enseñarles cómo usarlo correctamente.

Simplemente eliminarlo es poner una curita en el síntoma, no combatir la enfermedad.

Sin embargo, si aún así deseas eliminar el atributo, hay un par de formas de hacerlo:

Usar un Filtro de Contenido

El contenido del post pasa por un filtro antes de mostrarse en pantalla. Este filtro hace varias cosas: transforma comillas rectas en comillas curvas, capitaliza la P en WordPress, etc. También maneja los shortcodes presentes en el contenido.

Puedes pasar tu contenido por un filtro que use expresiones regulares para encontrar etiquetas <img /> y eliminar el atributo title.

Usar un Plugin

Una búsqueda rápida en el repositorio de plugins devolvió Img Title Removal, un plugin que afirma hacer exactamente lo que quieres. Un vistazo rápido al código muestra que implementa exactamente la opción 1:

<?php
/*
Plugin Name: Img Title Removal
Plugin URI: http://www.glauserconsulting.com/2008/11/nu-agency/
Description: Plugin filtro que elimina todos los atributos title de las imágenes en los 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) {

    // Obtiene todos los title="..." del HTML.
    $result = array();
    preg_match_all('|title="[^"]*"|U', $text, $result);

    // Reemplaza todas las ocurrencias con una cadena vacía.
    foreach($result[0] as $img_tag) {
        $text = str_replace($img_tag, '', $text);
    }

    return $text;
}
?>

Usar JavaScript

Una tercera opción sería eliminar dinámicamente los atributos title después de que se hayan renderizado en la página. Si absolutamente debes eliminarlos, este es el sistema que recomendaría porque el title seguirá en el código HTML (para lectores de pantalla) pero se eliminará al cargar el documento, evitando así los tooltips "aleatorios y no descriptivos".

Usando jQuery, puedes seleccionar todos los elementos <img /> en la página que tengan un atributo title y eliminarlo. Ejemplo:

jQuery(document).ready(function($) {
    $('img[title]').each(function() { $(this).removeAttr('title'); });
});
30 dic 2010 17:18:59
Comentarios

Los lectores de pantalla utilizan el atributo alt. El atributo title nunca debe ser un instrumento de accesibilidad.

fuxia fuxia
30 dic 2010 20:49:34

¡Este plugin es exactamente lo que estaba buscando. ¡Gracias!

heintore heintore
3 ene 2011 19:20:59

Esto fue marcado para atención del moderador con esencialmente el mismo sentimiento que toscho mencionó arriba y un par de enlaces http://www.456bereastreet.com/archive/200412/the_alt_and_title_attributes/ http://www.rnib.org.uk/professionals/webaccessibility/wacblog/Lists/Posts/Post.aspx?id=38 ¿quizás valdría la pena revisar?...

Rarst Rarst
5 may 2011 23:34:40

Es extraño que no vea banderas en mis propias publicaciones a menos que vea mi propio perfil... revisado.

EAMann EAMann
16 jun 2011 17:09:46

+1 por el método JavaScript. Sin pérdida de contenido para los motores de búsqueda.

addedlovely addedlovely
17 jun 2011 12:44:32
0

Aquí hay una solución sin JavaScript sin modificar el núcleo, prueba esto en el archivo function.php de tus temas.

add_filter( 'wp_get_attachment_image_attributes', 'remove_image_text' );
function remove_image_text( $attr ) {
    unset( $attr['alt'] ); // Elimina el atributo alt
    unset( $attr['title']) ; // Elimina el atributo title
    return $attr;
}
15 may 2013 23:04:17
5
-5

Si estás buscando una forma de dejar el campo de título <input> vacío y que no se cargue automáticamente con el nombre del archivo al subir una imagen, aquí hay una solución:

Ve a wp-admin/includes/media.php

Línea 911 <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br />

Cámbialo por: <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='' /><br />

También tengo muchos clientes a los que no les importa esto.

30 dic 2010 17:42:40
Comentarios

Yo no modificaría un archivo del núcleo, ya que esto causará problemas cuando actualices WordPress. Si es posible, es mejor usar un hook.

Jan Fabry Jan Fabry
30 dic 2010 18:43:44

Sí, no es lo mejor, ¿cómo podríamos hacerlo con un hook?

kevin kevin
30 dic 2010 19:03:57

No puedo enfatizarlo lo suficiente: ¡¡¡no modifiques el núcleo!!! ... http://wordpress.stackexchange.com/questions/1639/what-are-some-reasons-why-you-should-not-hack-wordpress-core-files

EAMann EAMann
30 dic 2010 20:04:57

De acuerdo, NUNCA HACKES EL NÚCLEO, es por eso que permiten filtros. Si no puedes agregar un filtro o acción, entonces así sea, encuentra una nueva ruta. ¡¡¡PERO NUNCA HACKEES EL NÚCLEO!!!

xLRDxREVENGEx xLRDxREVENGEx
16 jun 2011 21:08:24

Curioso cómo el hilo se vuelve emocional. Como decían en la antigua Roma: "Todos los caminos conducen a Roma" :)

kaiser kaiser
17 jun 2011 06:15:34