Удаление атрибута title из изображений

30 дек. 2010 г., 16:36:17
Просмотры: 34.2K
Голосов: 4

Я ищу способ удалить атрибут title из изображений, предпочтительно используя хук или фильтр.

Большинство клиентов не утруждают себя указанием правильного заголовка для изображений, что сводит на нет цель этого атрибута. Я предпочитаю отсутствие всплывающих подсказок случайным, неинформативным подсказкам.

1
Комментарии

Да, мне часто задают этот вопрос, хотя это и не лучшая практика, но некоторым клиентам всё равно. Я использую JavaScript-метод, приведённый ниже, на случай, если они передумают позже. (+1 за то, что это корректный вопрос, даже если сама идея не самая лучшая...)

addedlovely addedlovely
17 июн. 2011 г. 12:46:07
Все ответы на вопрос 3
5

Я бы категорически не рекомендовал этого делать. Более правильным и устойчивым решением будет объяснить клиентам ценность атрибута title и научить их правильно его использовать.

Простое удаление атрибута — это лишь временное решение симптома, но не борьба с причиной проблемы.

Однако, если вы всё же хотите удалить этот атрибут, есть несколько способов:

Использовать фильтр контента

Контент записи проходит через фильтр перед отображением на экране. Этот фильтр выполняет несколько задач: преобразует кавычки в «ёлочки», делает заглавной букву P в WordPress и т.д. Он также обрабатывает шорткоды, присутствующие в контенте.

Вы можете пропустить контент через фильтр, который использует регулярные выражения для поиска тегов <img /> и удаления атрибута title.

Использовать плагин

Быстрый поиск в репозитории плагинов выдал Img Title Removal — плагин, который, по заявлению, делает именно то, что вам нужно. Взглянув на код, можно увидеть, что он реализует первый вариант:

<?php
/*
Plugin Name: Img Title Removal
Plugin URI: http://www.glauserconsulting.com/2008/11/nu-agency/
Description: Плагин-фильтр, удаляющий все атрибуты title у изображений в записях.
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) {

    // Получаем все title="..." из HTML.
    $result = array();
    preg_match_all('|title="[^"]*"|U', $text, $result);

    // Заменяем все вхождения пустой строкой.
    foreach($result[0] as $img_tag) {
        $text = str_replace($img_tag, '', $text);
    }

    return $text;
}
?>

Использовать JavaScript

Третий вариант — динамически удалять атрибуты title после их отображения на странице. Если вам обязательно нужно их удалить, я рекомендую именно этот способ, потому что title останется в HTML-коде (для скринридеров), но будет удалён при загрузке документа, что позволит избежать "случайных, неописательных" подсказок.

Используя jQuery, вы можете выбрать все элементы <img /> на странице, имеющие атрибут title, и удалить его. Пример:

jQuery(document).ready(function($) {
    $('img[title]').each(function() { $(this).removeAttr('title'); });
});
30 дек. 2010 г. 17:18:59
Комментарии

Скринридеры используют атрибут alt. Атрибут title никогда не должен быть инструментом доступности.

fuxia fuxia
30 дек. 2010 г. 20:49:34

Плагин — именно то, что я искал. Спасибо!

heintore heintore
3 янв. 2011 г. 19:20:59

Это было отмечено для внимания модератора с аналогичным мнением, как у toscho выше, и парой ссылок 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 возможно стоит пересмотреть?..

Rarst Rarst
5 мая 2011 г. 23:34:40

Странно, что я не вижу флаги на своих материалах, пока не зайду в свой профиль... исправлено.

EAMann EAMann
16 июн. 2011 г. 17:09:46

+1 за JavaScript метод. Без потери контента для поисковых систем.

addedlovely addedlovely
17 июн. 2011 г. 12:44:32
0

Вот решение без использования JavaScript, не требующее изменения ядра. Попробуйте добавить этот код в файл 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;
}
15 мая 2013 г. 23:04:17
5
-5

Если вам нужно оставить поле заголовка <input> пустым и не заполнять его автоматически именем файла при загрузке изображения, вот способ:

Перейдите в wp-admin/includes/media.php

Строка 911: <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($url) . "' /><br />

Измените её на: <input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='' /><br />

У меня также много клиентов, которым это не важно.

30 дек. 2010 г. 17:42:40
Комментарии

Я бы не изменял основной файл, так как это приведёт к проблемам при обновлении WordPress. По возможности, лучше использовать хук.

Jan Fabry Jan Fabry
30 дек. 2010 г. 18:43:44

Да, это не лучший вариант, как мы можем сделать это через хук?

kevin kevin
30 дек. 2010 г. 19:03:57

Не могу не подчеркнуть: не взламывайте ядро!!! ... http://wordpress.stackexchange.com/questions/1639/what-are-some-reasons-why-you-should-not-hack-wordpress-core-files

EAMann EAMann
30 дек. 2010 г. 20:04:57

Согласен, НИКОГДА НЕ ВЗЛАМЫВАЙТЕ ЯДРО именно поэтому они предоставляют фильтры. Если вы не можете добавить фильтр или действие, тогда что ж, найдите другой путь. НО НИКОГДА НЕ ВЗЛАМЫВАЙТЕ ЯДРО!!!!

xLRDxREVENGEx xLRDxREVENGEx
16 июн. 2011 г. 21:08:24

Забавно, как эмоциональной становится эта ветка. Как говорили в древнеримские времена: "Все дороги ведут в Рим" :)

kaiser kaiser
17 июн. 2011 г. 06:15:34