Июл
16
25

Убираем ненужный текст из атрибута title для ссылок категорий

категории wordpressВ системе 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("Просмотреть все записи в рубрике &laquo;" , '' , $categoriesVar );
$categoriesVar = str_replace("&raquo;" , '' , $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("Просмотреть все записи в рубрике &laquo;" , '' , $categoriesVar );
$categoriesVar = str_replace("&raquo;" , '' , $categoriesVar );
echo $categoriesVar;
?>

Можно, конечно, подправить код самой функции wp_list_categories в исходниках, но это неправильное решение. Вообще идеально, наверное, было бы переопределить функцию вывода категорий wp_list_categories в файле функций functions.php дабы не вносить правки в шаблон каждый раз при его смене, но, увы, не знаю как это сделать:( Если вы в курсе, поделитесь решением в комментариях.

P.S. Постовой. Компания Hosted предлагает качественный платный хостинг по доступным ценам, хорошая и стабильная работа гарантирована.
Качественное и естественное размножение и генерация статей для сайтов, сателлитов и продвижения.
Туристический оператор Элит Турс позволяет заказать авиабилеты по Украине и на международные рейсы.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 2, средний балл: 7,00 из 7)
Загрузка...

категория Категории: Хаки и секреты;
теги Теги: , , , , .

комментариев 25 к статье “Убираем ненужный текст из атрибута title для ссылок категорий”

  • Роман   18.07.2010

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

  • Damian   01.10.2010

    Что-то вообще не понял я где это искать. Какой файл изменить нужно? У меня нет на сайте ни одной такой фразы, про которую вы тут пишите.

  • Tod   04.10.2010

    Damian, если нет подобных фраз, то искать ничего не нужно.

  • Damian   04.10.2010

    А есть какие-то ещё варианты как можно убрать «Просмотреть все записи в рубрике…»? Насколько я знаю, поисковики, особенно Google, очень любят эти тайтлы в ссылках. И хотелось бы сделать их разными, то есть без повторяющейся «Просмотреть все записи в рубрике…»

  • Tod   05.10.2010

    Damian, о том как убрать эти надписи я и написал в статье, читаем внимательно. Разными их делать в принципе никакого смысла нет.

  • Korvin204   21.11.2010

    Можно отредактировать файл classes.php (/wp-includes).
    Строка:
    $link .= ‘title=»‘ . sprintf(__( ‘View all posts filed under %s’ ), $cat_name) . ‘»‘;

  • Киноман   04.01.2011

    Отредактировал 2 строчки файла classes.php (/wp-includes)и получилось как и задумывалось.
    if ( $use_desc_for_title == 1 || empty($category->description) )
    $link .= ‘title=»‘ . sprintf(__( ‘%s’ ), $cat_name) . ‘»‘;

  • alina   27.04.2011

    спасибо, все получилось!:)

  • Vov_chik   13.05.2011

    Здравствуйте! В функции wp_list_pages есть возможность перед выводом непосредственной названия страницы вставлять необходимый html код с помощью link_before:
    <?php
    wp_list_pages('link_before=&title_li=&include=18&link_after=’);
    ?>
    Возможно ли тоже сделать для функции wp_list_categories ? И как?

  • Vov_chik   13.05.2011

    Уже разобрался ! Надо написать так:
    ‘ , ‘»»>’ , $categoriesVar );
    $categoriesVar = str_replace(«» , ‘‘ , $categoriesVar );
    echo $categoriesVar;
    ?>
    Спасибо большое! Статья помогла!

  • Mnemonic_13   21.12.2011

    спасибо за материал!
    Мне для блога нужно было полностью убрать атрибут 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’);

  • Андрей   09.01.2012

    А как убрать всплывающий заголовок над названием рубрики в сайдбаре? На Вашем сайте над рубрикой отображается только название, а на странице самой рубрики уже идет вступительный текст. Как сделать, чтобы этот текст не отображался весь?

  • Tod   11.01.2012

    Андрей, посмотрите статью как добавить текст описания в категории wordpress блога, возможно там найдете ответ на свой вопрос. Дабы описание не выводилось в функции wp_list_categories есть какой-то параметр, уже точно не вспомню, смотрите кодекс вордпресс.

  • Андрей   11.04.2012

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

    Мне нужно, чтобы при генерации ссылки категории в title записывалось хотябы название категории что-ли или как-нибудь обрезался текст описания на определенное кол-во символов. Я пытался разобраться в коде, но ни чего не получается, потому что wp_list_catrgories там даже нету.

    Вот какой код вывода категорий у меня:

    ‘secondary-menu’, ‘container’ => », ‘fallback_cb’ => », ‘menu_class’ => $menuClass, ‘echo’ => false ) );
    };
    if ($secondaryNav == ») { ?>
    <ul class="»>

    <li ><a href="»>

    Помогите, пожалуйста. Что, где нужно прописатать/исправить/удалить? Очень буду благодарен за помощь.

  • Андрей   11.04.2012

    Блин, весь код обрезался…

  • Tod   12.04.2012

    Андрей, я так понимаю меню у вас выводится через функцию wp_nav_menu — вариант посмотреть ее параметры и поискать там нужное решение. Можете выслать код на почту stod84@gmail.com — посмотрю что там можно сделать раз он здесь не отобразился.

  • Павел Южный   21.08.2012

    Подскажите как убрать скобки в отображении числа постов в рубрике?

  • Tod   22.08.2012

    Павел, по аналогии с примером, рассмотренным в посте, нужно просто убрать вывод скобок — точный код не приведу, внимательно посмотрите и попробуйте пример из статьи, а потом и со скобками сможете разобраться.

  • Павел Южный   22.08.2012

    Окей. Значит со скобками разобрался. спасибо. А как число записей можно оформить, не знаете?

  • Дмитрий   31.03.2013

    Нашел самый быстрый и эффективный способ решения этой проблемы с выводом сообщения при наведении на ссылку рубрики!!!
    Кому поможет прекрасно.
    Мы уберем ее по умолчанию.
    Заходим в папку wp-includes и ищем файл category-template.php
    в данном файле находим строчку
    $link .= ‘title=»‘ . esc_attr( sprintf(__( ‘View all posts filed under %s’ ), $cat_name) ) . ‘»‘
    У меня она была под № 830 и заключаем ей в /*-слева и в */ — справа, до точки с запятой.
    Сохраняем, отправляем по ftp
    Переходим на блог и ВУАЛЯ! Все пропало.

  • Tod   01.04.2013

    Дмитрий, быстрый не значит эффективный. Как только вы обновите wordpress (по случайности или необходимости) все эти изменения пропадут. Так что, имхо, лучше разок повозиться с шаблоном и никогда более к этому вопросу не возвращаться. Правда ядра системы — не лучший выход.

  • Дмитрий   02.04.2013

    Каждый кулик свое болото хвалит….
    Ваши аргументы оставили мое мнение без изменений. И что Вы нашли в таком способе неэффективного, если результат получен какой требовалось. Если и обновить движок, то опять закомментировать одну строчку не составит труда. А если кто-то захочет шаблон сменить, вновь разбираться придется кодом и функциями. Читая этот пост я сразу увяз в догадках, что и куда вставлять нужно, а некоторые комментарии подтверждают наличие таких же трудностей у пользователей. Мой способ рассчитан на непрофессоналов как я. Так что непрофессионалы пробуйте.

  • Tod   02.04.2013

    Дмитрий, ну, я вроде бы точно объяснил причины: 1) забудете как-то о своем измененном коде и обновите вордпресс — все ваши старания пропаду, вряд ли вы после апдейта будете проверять правильность атрибутов title и увидите глюк только спустя некоторое время. 2) при создании сайтов под заказ правка кода системы также может привести к аналогичной ситуации — клиенты обновляют wp и бац глюк возвращается.
    Я говорю это не потому что мне не нравится ваш метод или чрезмерно хвалю свой — проясняю ситуацию на основании своего опыта разработки сайтов, т.к. с подобными ситуациями сталкивался. Приведенный вами метод действительно простой, но править файлы ядра любой CMS системы для решения тех или иных задач — некорректно, нужно все это делать с помощью функций и возможностей системы.

  • Лена   03.07.2013

    мой вопрос немного не по теме, но очень надеюсь на вашу помощь!
    у меня в постах отображается сначала название поста и следом заголовок статьи (h1)
    В итоге статья выглядит так:
    Варенье из лепестков
    Сладкое варенье из лепестков роз
    и далее текст….
    Выглядит не очень, как это можно исправить?

  • Tod   04.07.2013

    Лена, это исправляется в файлах шаблона. Шаблон страницы с полным текстом статьи находится в single.php (раздел Внешний вид — Редактор).

Оставить комментарий


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

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости