Убираем ненужный текст из атрибута title для ссылок категорий
В системе wordpress есть некоторые моменты, предназначение которых остается загадкой для многих пользователей системы. Одной из таких непонятных особенностей есть часть кода, что генерируется в результате использования функции wp_list_categories для категории wordpress. Если вы внимательно посмотрели бы на HTML код, например, блога WordPress Inside, то там при выводе списка категорий отображалось бы что-то вроде:
<ul> <li class="cat-item cat-item-10"> <a href="https://wpinsideblog.com/category/security/" title="Просмотреть все записи в рубрике «Безопасность»">Безопасность</a> (2) </li> <li class="cat-item cat-item-85"> <a href="https://wpinsideblog.com/category/video/" title="Просмотреть все записи в рубрике «Видео»">Видео</a> (3) </li> <li class="cat-item cat-item-12"> <a href="https://wpinsideblog.com/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 предлагает качественный платный хостинг по доступным ценам, хорошая и стабильная работа гарантирована.
Качественное и естественное размножение и генерация статей для сайтов, сателлитов и продвижения.
Туристический оператор Элит Турс позволяет заказать авиабилеты по Украине и на международные рейсы.
комментариев 25 к статье “Убираем ненужный текст из атрибута title для ссылок категорий”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Оптимизируем WordPress header и удаляем лишний код (5,19 из 7, голосов - 43)
- Как создать пункт меню без ссылки в wordpress (6,39 из 7, голосов - 23)
- Добавление кнопки Вконтакте, Facebook и Twitter в wordpress блог (6,14 из 7, голосов - 21)
- Выполнение jQuery скриптов при выборе вариаций товаров в WooCommerce (3,96 из 7, голосов - 26)
- Хаки для вариаций товаров в WooCommerce (5,11 из 7, голосов - 18)
- Вывод текста в блоге только на главной (6,85 из 7, голосов - 13)
- Как убрать category в WordPress категориях — зачем это делать, плагины для реализации (5,31 из 7, голосов - 16)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
А у меня с блогом другая проблема, на главной странице титлы на постовые отображаются вот так:
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 есть какой-то параметр, уже точно не вспомню, смотрите кодекс вордпресс.
Помогите, пожалуйста с одной вещью. У меня на сайте есть навигационное меню, в котором отображаются категории. Однако в ссылках у них значение title не как в этой статье, а тупо записывается описание самой категории. Поскольку для категорий я буду выводить их описания на их же страницах, то и текст получается очень большой и выглядит это дела при наводе мышки на ссылку категории очень ужасно.
Мне нужно, чтобы при генерации ссылки категории в title записывалось хотябы название категории что-ли или как-нибудь обрезался текст описания на определенное кол-во символов. Я пытался разобраться в коде, но ни чего не получается, потому что wp_list_catrgories там даже нету.
Вот какой код вывода категорий у меня:
‘secondary-menu’, ‘container’ => », ‘fallback_cb’ => », ‘menu_class’ => $menuClass, ‘echo’ => false ) );
};
if ($secondaryNav == ») { ?>
<ul class="»>
<li ><a href="»>
Помогите, пожалуйста. Что, где нужно прописатать/исправить/удалить? Очень буду благодарен за помощь.
Блин, весь код обрезался…
Андрей, я так понимаю меню у вас выводится через функцию wp_nav_menu — вариант посмотреть ее параметры и поискать там нужное решение. Можете выслать код на почту stod84@gmail.com — посмотрю что там можно сделать раз он здесь не отобразился.
Подскажите как убрать скобки в отображении числа постов в рубрике?
Павел, по аналогии с примером, рассмотренным в посте, нужно просто убрать вывод скобок — точный код не приведу, внимательно посмотрите и попробуйте пример из статьи, а потом и со скобками сможете разобраться.
Окей. Значит со скобками разобрался. спасибо. А как число записей можно оформить, не знаете?
Нашел самый быстрый и эффективный способ решения этой проблемы с выводом сообщения при наведении на ссылку рубрики!!!
Кому поможет прекрасно.
Мы уберем ее по умолчанию.
Заходим в папку wp-includes и ищем файл category-template.php
в данном файле находим строчку
$link .= ‘title=»‘ . esc_attr( sprintf(__( ‘View all posts filed under %s’ ), $cat_name) ) . ‘»‘
У меня она была под № 830 и заключаем ей в /*-слева и в */ — справа, до точки с запятой.
Сохраняем, отправляем по ftp
Переходим на блог и ВУАЛЯ! Все пропало.
Дмитрий, быстрый не значит эффективный. Как только вы обновите wordpress (по случайности или необходимости) все эти изменения пропадут. Так что, имхо, лучше разок повозиться с шаблоном и никогда более к этому вопросу не возвращаться. Правда ядра системы — не лучший выход.
Каждый кулик свое болото хвалит….
Ваши аргументы оставили мое мнение без изменений. И что Вы нашли в таком способе неэффективного, если результат получен какой требовалось. Если и обновить движок, то опять закомментировать одну строчку не составит труда. А если кто-то захочет шаблон сменить, вновь разбираться придется кодом и функциями. Читая этот пост я сразу увяз в догадках, что и куда вставлять нужно, а некоторые комментарии подтверждают наличие таких же трудностей у пользователей. Мой способ рассчитан на непрофессоналов как я. Так что непрофессионалы пробуйте.
Дмитрий, ну, я вроде бы точно объяснил причины: 1) забудете как-то о своем измененном коде и обновите вордпресс — все ваши старания пропаду, вряд ли вы после апдейта будете проверять правильность атрибутов title и увидите глюк только спустя некоторое время. 2) при создании сайтов под заказ правка кода системы также может привести к аналогичной ситуации — клиенты обновляют wp и бац глюк возвращается.
Я говорю это не потому что мне не нравится ваш метод или чрезмерно хвалю свой — проясняю ситуацию на основании своего опыта разработки сайтов, т.к. с подобными ситуациями сталкивался. Приведенный вами метод действительно простой, но править файлы ядра любой CMS системы для решения тех или иных задач — некорректно, нужно все это делать с помощью функций и возможностей системы.
мой вопрос немного не по теме, но очень надеюсь на вашу помощь!
у меня в постах отображается сначала название поста и следом заголовок статьи (h1)
В итоге статья выглядит так:
Варенье из лепестков
Сладкое варенье из лепестков роз
и далее текст….
Выглядит не очень, как это можно исправить?
Лена, это исправляется в файлах шаблона. Шаблон страницы с полным текстом статьи находится в single.php (раздел Внешний вид — Редактор).