Ссылки в заголовках виджетов

Можно добавить фрагмент в functions.php активной темы:

function allow_url_in_widget_title($title) {
	return preg_replace('/[url=(.+)](.+)[/url]/i', '<a href="$1">$2</a>', $title);
}
add_filter('widget_title', 'allow_url_in_widget_title');

После этого прямо в заголовке любого виджета можно указывать ссылку в формате BBCode, например:

[url=http://example.com/education/]Образование[/url]

Sergey Biryukov

Разработчик и локализатор WordPress в России.

Оцените автора
Добавить комментарий

  1. Спасибо! — хорошее решение.

    Не хотите в профиле написать о себе? Посетителям будет интересно узнать, что вы имеете отношение к русскому WP сообществу.

    Ответить
    1. Sergey Biryukov автор

      Спасибо за напоминание :) А где отображается эта информация? По адресу /author/username, насколько я понял, — только список записей?

      Ответить
      1. В конце вашей записи (поисковики это тоже видят, простая разметка HTML в био поддрерживается):
        [img]https://n-wp.ru/wp-content/uploads/2011/08/tiaurus-2011-08-01_084907.png[/img]

        На странице постов автора отображение информации о нем тоже планируется показывать.

        Ответить
        1. Sergey Biryukov автор

          Теперь увидел, спасибо :)

          Ответить
  2. crankman

    Скажите, а как можно изменить цвет ссылки в BBCode?

    Ответить
    1. tiaurus

      Заменить

      <a href="$1" rel="nofollow ugc">$2</a>

      на

      <a class="color-link" href="$1" rel="nofollow ugc">$2</a>

      Добавить в style.css оформление:

      a.color-link       {color:#808080;}
      a.color-link:hover {color:#ffa600;}
      
      Ответить
  3. danilkin

    А подскажите как все это организовать для плагина Newpost Catch? Newpost Catch выводит записи с миниатюрами из определенных рубрик. Как сделать заголовки с ссылками используя этот плагин?

    Ответить
  4. danilkin

    вместо
    add_filter(‘widget_title’, ‘allow_url_in_widget_title’);

    добавил
    add_filter(‘Newpostcatch_widget_title’, ‘allow_url_in_widget_title’);

    и все гуд

    Ответить