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

Я бы категорически не рекомендовал этого делать. Более правильным и устойчивым решением будет объяснить клиентам ценность атрибута 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'); });
});

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

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

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

Вот решение без использования 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;
}

Если вам нужно оставить поле заголовка <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 />
У меня также много клиентов, которым это не важно.

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

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

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