Убираем ненужный текст из атрибута title для ссылок категорий
В системе wordpress есть некоторые моменты, предназначение которых остается загадкой для многих пользователей системы. Одной из таких непонятных особенностей есть часть кода, что генерируется в результате использования функции wp_list_categories для категории wordpress. Если вы внимательно посмотрели бы на HTML код, например, блога WordPress Inside, то там при выводе списка категорий отображалось бы что-то вроде:
<ul> <li class="cat-item cat-item-10"> <a href="http://wordpressinside.ru/category/security/" title="Просмотреть все записи в рубрике «Безопасность»">Безопасность</a> (2) </li> <li class="cat-item cat-item-85"> <a href="http://wordpressinside.ru/category/video/" title="Просмотреть все записи в рубрике «Видео»">Видео</a> (3) </li> <li class="cat-item cat-item-12"> <a href="http://wordpressinside.ru/category/functions/" title="Просмотреть все записи в рубрике «Возможности»">Возможности</a> (26) </li>
Для заголовка каждой категории выводится фраза «Просмотреть все записи в рубрике». Для русской версии это еще более-менее нормально смотрится, но иногда в блогах можно встретить фразу «View all posts filed under», что, конечно, выглядит не очень хорошо. Кроме того, могут возникнуть ситуации, как, например, у одного англоязычного блоггера, когда заказчик попросил его убрать этот текст из атрибута title для ссылки.
Для такого случая нашел статью с интересным хаком, который позволяет легко справится с поставленной задачей. Алгоритм действий достаточно прост. Учитывая тот факт, что функция вывода категорий, как и многие другие в wordpress, имеет параметр, отвечающий за отображения результата ее выполнения – ставим для него значение = 0. В таком случае мы сможем предварительно обработать результата, заменив или удалив ненужную фразу, а потом уже отобразить ее на сайте.
В общем случае получает такой вот код:
<?php $categoriesVar = wp_list_categories("echo=0"); $categoriesVar = str_replace( "View all posts filed under " , ' ' , $categoriesVar ); echo $categoriesVar; ?>
Его нужно добавить в то место шаблона wordpress блога, где выводится перечень категорий через wp_list_categories. Данный пример убирает из title ненужную фразу, оставляя лишь название категории.
Можно вообще удалить атрибут title из генерируемой ссылки категории:
<?php $categoriesVar = wp_list_categories("echo=0"); $categoriesVar = preg_replace( '/title=\"(.*?)\"/' , ' ' , $categoriesVar ); echo $categoriesVar; ?>
Напоследок нужно заметить 2 вещи. Во-первых, если вы используете функцию для вывода категорий через wp_list_categories с большим числом параметров, то при замене кода их нужно оставлять, добавляя лишь параметр echo=0, например:
$categoriesVar = wp_list_categories("hide_empty=1&child_of=4&depth=1&title_li=&orderby=name&order=asc&use_desc_for_title=0&echo=0");
Во-вторых, для русских блогов, нужно изменять текст генерируемый функцией категорий. Причем название категории в русском варианте окружено дополнительно скобками « и », которые тоже придется убрать.
$categoriesVar = str_replace("Просмотреть все записи в рубрике «" , '' , $categoriesVar ); $categoriesVar = str_replace("»" , '' , $categoriesVar );
В общем, нужно убирать лишний текст, который выводится именно в вашем блоге, посмотрите HTML код и уже исходя из этого используйте соответствующее решение. Так, например, для WordPress Inside у меня получится следующий код:
<?php $categoriesVar = wp_list_categories("hide_empty=1&exclude=1&title_li=&orderby=count&order=desc&use_desc_for_title=0&echo=0"); $categoriesVar = str_replace("Просмотреть все записи в рубрике «" , '' , $categoriesVar ); $categoriesVar = str_replace("»" , '' , $categoriesVar ); echo $categoriesVar; ?>
Можно, конечно, подправить код самой функции wp_list_categories в исходниках, но это неправильное решение. Вообще идеально, наверное, было бы переопределить функцию вывода категорий wp_list_categories в файле функций functions.php дабы не вносить правки в шаблон каждый раз при его смене, но, увы, не знаю как это сделать:( Если вы в курсе, поделитесь решением в комментариях.
P.S. Постовой. Компания Hosted предлагает качественный платный хостинг по доступным ценам, хорошая и стабильная работа гарантирована.
Качественное и естественное размножение и генерация статей для сайтов, сателлитов и продвижения.
Туристический оператор Элит Турс позволяет заказать авиабилеты по Украине и на международные рейсы.
Комментариев - 13 к статье “Убираем ненужный текст из атрибута title для ссылок категорий”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Плагин Lightbox Plus – улучшенный эффект для изображений
- Скрываем custom fields для не админов, функция remove_meta_box()
- Видеокурс WordPress Security по защите блога на WordPress
- Плагины смайликов в wordpress блоге
- Обновление WordPress подробно для начинающих
- Лишние ссылки с WordPress прочь
- Вставка PHP кода в WordPress через виджеты
- Безопасность (3)
- Видео (5)
- Возможности (53)
- Начинающим (16)
- Новости (19)
- Оптимизация (12)
- Плагины (61)
- Сервисы (10)
- Хаки и секреты (39)
- Шаблоны (13)
- Добавление кнопки Вконтакте, Facebook и Twitter в wordpress блог






(6,08 из 7, голосов - 12) - Оптимизируем WordPress header и удаляем лишние элементы






(4,85 из 7, голосов - 13) - 17 полезных приемов и хаков для WordPress






(5,44 из 7, голосов - 9) - Изображения (миниатюры) для связных постов в Simple Tags






(4,70 из 7, голосов - 10) - Как добавить дополнительные кнопки в редактор WordPress






(5,25 из 7, голосов - 8) - Использование скрипта Lightbox 2 в WordPress блоге без плагина






(5,71 из 7, голосов - 7) - Вывод категорий для поста через функцию get_the_category






(4,50 из 7, голосов - 8)
- Seleckis.lv — Журнал Никиты Селецкого
- Блогинг в стиле web 2.0
- Достопримечательности Львова
- Про блоги для блоггеров
- WordpressPlugins.ru
- Более шестидесяти новых приложений для Timeline в Facebook
- Пользователям ICQ: в любимой программе теперь есть радио!
- Новостной украинский агрегатор Like.ua – что это?
- Foursquare представил миру возможность персонализированного поиска
- Google выставлено публичное обвинение в пиратстве
- Для Windows Phone 7 выпущен новый WebMoney Keeper Mobile
- Ноутбуки с 3D-чипами станут более производительными

Оцените статью:
Категории:
Теги:
А у меня с блогом другая проблема, на главной странице титлы на постовые отображаются вот так:
Permanent to Link «название поста» (когда мышкой наводишь)
Сам это проблему устранить не мог в своё время, сейчас попробую воспользоваться вашим советом
спасибо за информацию
Что-то вообще не понял я где это искать. Какой файл изменить нужно? У меня нет на сайте ни одной такой фразы, про которую вы тут пишите.
Damian, если нет подобных фраз, то искать ничего не нужно.
А есть какие-то ещё варианты как можно убрать «Просмотреть все записи в рубрике…»? Насколько я знаю, поисковики, особенно Google, очень любят эти тайтлы в ссылках. И хотелось бы сделать их разными, то есть без повторяющейся «Просмотреть все записи в рубрике…»
Damian, о том как убрать эти надписи я и написал в статье, читаем внимательно. Разными их делать в принципе никакого смысла нет.
Можно отредактировать файл classes.php (/wp-includes).
Строка:
$link .= ‘title=»‘ . sprintf(__( ‘View all posts filed under %s’ ), $cat_name) . ‘»‘;
Отредактировал 2 строчки файла classes.php (/wp-includes)и получилось как и задумывалось.
if ( $use_desc_for_title == 1 || empty($category->description) )
$link .= ‘title=»‘ . sprintf(__( ‘%s’ ), $cat_name) . ‘»‘;
спасибо, все получилось!:)
Здравствуйте! В функции wp_list_pages есть возможность перед выводом непосредственной названия страницы вставлять необходимый html код с помощью link_before:
<?php
wp_list_pages('link_before=&title_li=&include=18&link_after=’);
?>
Возможно ли тоже сделать для функции wp_list_categories ? И как?
Уже разобрался ! Надо написать так:
‘ , ‘»»>’ , $categoriesVar );
$categoriesVar = str_replace(«» , ‘‘ , $categoriesVar );
echo $categoriesVar;
?>
Спасибо большое! Статья помогла!
спасибо за материал!
Мне для блога нужно было полностью убрать атрибут title из ссылки
решение с переопределением функции wp_list_categories по ссылке ниже.
http://stackoverflow.com/questions/2405437/removing-title-from-wp-list-categories
function wp_list_categories_remove_title_attributes($output) {
$output = preg_replace(‘` title=»(.+)»`’, », $output);
return $output;
}
add_filter(‘wp_list_categories’, ‘wp_list_categories_remove_title_attributes’);
А как убрать всплывающий заголовок над названием рубрики в сайдбаре? На Вашем сайте над рубрикой отображается только название, а на странице самой рубрики уже идет вступительный текст. Как сделать, чтобы этот текст не отображался весь?
Андрей, посмотрите статью как добавить текст описания в категории wordpress блога, возможно там найдете ответ на свой вопрос. Дабы описание не выводилось в функции wp_list_categories есть какой-то параметр, уже точно не вспомню, смотрите кодекс вордпресс.