Убираем ненужный текст из атрибута 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 предлагает качественный платный хостинг по доступным ценам, хорошая и стабильная работа гарантирована.
Качественное и естественное размножение и генерация статей для сайтов, сателлитов и продвижения.
Туристический оператор Элит Турс позволяет заказать авиабилеты по Украине и на международные рейсы.
1 комментарий к статье “Убираем ненужный текст из атрибута title для ссылок категорий”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Плагин Exclude categories исключаем категории с главной и RSS
- Плагин WPML – мультиязычность и локализация wordpress сайта
- Добавление кнопки Вконтакте, Facebook и Twitter в wordpress блог
- Оригинальные бесплатные шаблоны для Wordpress
- Улучшаем страницу с результатами поиска в wordpress
- Последние сообщения twitter в wordpress блоге
- Плагин jQuery Image Lazy Loader WP – постепенная загрузка изображений
- Отказ от PHP 4 и MySQL 4 для WordPress 3.2
- Добавление ссылок nofollow в blogroll блога
- Сервис keyCaptcha – интерактивная каптча для защиты от спама
- Безопасность (2)
- Видео (4)
- Возможности (28)
- Начинающим (11)
- Новости (14)
- Оптимизация (6)
- Плагины (30)
- Сервисы (6)
- Хаки и секреты (22)
- Шаблоны (7)
- Seleckis.lv — Журнал Никиты Селецкого
- Блогинг в стиле web 2.0
- Достопримечательности Львова
- Сайт чемпионата мира 2010 по футболу

Категории:
Теги:
А у меня с блогом другая проблема, на главной странице титлы на постовые отображаются вот так:
Permanent to Link «название поста» (когда мышкой наводишь)
Сам это проблему устранить не мог в своё время, сейчас попробую воспользоваться вашим советом
спасибо за информацию