Добавление атрибута target к ссылкам с помощью функции links_add_target()

# Функция links_add_target() │ WP 2.7.0

Функция links_add_target() добавляет атрибут target ко всем ссылкам в переданном тексте. По умолчанию она работает только с тегами <a>, но это можно изменить с помощью параметра $tags.

**Важно**: Все существующие атрибуты target будут удалены и заменены.

## Производительность

- 1 раз — 0.000099 сек (очень быстро)
- 50000 раз — 0.38 сек (очень быстро)

**Версия PHP**: 7.0.8, **Версия WP**: 4.6

### Нет хуков.

## Возвращаемое значение

Функция возвращает строку — обработанный текст.

## Использование

```php
links_add_target( $content, $target, $tags );

Параметры

  • $content (строка, обязательный) — текст, в котором нужно искать ссылки.
  • $target (строка) — значение target, которое нужно добавить к ссылкам. По умолчанию: '_blank'
  • $tags (массив строк) — массив тегов, к которым будет применяться данная функция. По умолчанию: array( 'a' )

Примеры

Пример 1: Добавление атрибута target=_blank ко всем ссылкам

$text = 'Задача организации, особенно дальнейшее развитие различных форм.';

$text = links_add_target( $text );

echo $text;

/* Вывод будет:
Задача организации, особенно дальнейшее развитие различных форм.
*/

Пример 2: Добавление target="_blank" только ко всем внешним ссылкам

К сожалению, эта функция добавляет атрибут target ко всем ссылкам в переданном тексте, а не только к внешним. Вот возможное решение:

// target="_blank" только для внешних ссылок
add_filter( 'the_content', 'external_links_new_tab' );

function external_links_new_tab( $content ){
    $content = wp_unslash( wp_rel_nofollow( $content ) );
    $content = str_replace( 'rel="nofollow"', 'target="_blank"', $content );

    return $content;
}

Примечания

  • Глобальная переменная: $_links_add_target

Изменения

  • С 2.7.0 — впервые добавлено.

Код функции links_add_target()

function links_add_target( $content, $target = '_blank', $tags = array( 'a' ) ) {
    global $_links_add_target;
    $_links_add_target = $target;
    $tags              = implode( '|', (array) $tags );
    return preg_replace_callback( "!<($tags)((s[^>]*)?)>!i", '_links_add_target', $content );
}


Эта версия статьи понятна начинающим пользователям WordPress и сохраняет точность, предоставляя структурированную информацию с примерами кода.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *