Функция wp_rel_nofollow()
в WordPress добавляет атрибут rel="nofollow"
ко всем HTML-тегам <a>
в переданном контенте. Эта функция применяется к внешним ссылкам, оставляя внутренние ссылки без изменений, что помогает оптимизировать SEO, исключая ненужные ссылки от индексации.
wp_rel_nofollow( string $text ): string
Параметры
- $text
- (string, обязательный) Контент, содержащий HTML ссылки
<a>
, к которым может быть добавлен атрибутrel="nofollow"
.
- (string, обязательный) Контент, содержащий HTML ссылки
Возвращаемое значение
Возвращает отформатированный контент, в котором внешние ссылки получили атрибут rel="nofollow"
, а внутренние ссылки остались без изменений.
Пример 1: Добавление rel="nofollow"
к внешним ссылкам в тексте
$text = 'Смех делает нас счастливее и сохраняет здоровье.
Чтобы узнать больше о юморе, посетите
<a href="http://external-source.com/laugh">исследование на внешнем сайте</a>
или читайте нашу <a href="/articles/laughter-benefits">статью о пользе смеха</a>.';
$text = wp_rel_nofollow( $text );
echo $text;
Результат выполнения кода:
Смех делает нас счастливее и сохраняет здоровье.
Чтобы узнать больше о юморе, посетите
<a href="http://external-source.com/laugh" rel="nofollow">исследование на внешнем сайте</a>
или читайте нашу <a href="/articles/laughter-benefits">статью о пользе смеха</a>.
Пример 2: Автоматическое добавление rel="nofollow"
ко всем внешним ссылкам в контенте постов
Можно добавить фильтр, чтобы применить wp_rel_nofollow()
ко всем ссылкам в контенте автоматически.
add_filter( 'the_content', 'wp_posts_nofollow' );
function wp_posts_nofollow( $content ) {
return wp_rel_nofollow( $content );
}
Теперь все внешние ссылки в постах будут автоматически получать атрибут rel="nofollow"
.
Пример 3: Улучшение обработки внешних ссылок — добавляем target="_blank"
и noopener
Чтобы сделать внешний контент более безопасным и удобным для пользователей, можно дополнительно добавить target="_blank"
и noopener
, что открывает ссылки в новой вкладке и предотвращает потенциальные угрозы безопасности.
add_filter( 'the_content', 'external_links_sanitizer' );
function external_links_sanitizer( $content ) {
$content = wp_rel_nofollow( $content );
$content = str_replace( 'rel="nofollow"', 'target="_blank" rel="nofollow noopener noindex"', $content );
return $content;
}
Пример 4: Применение rel="nofollow"
к ссылкам в пользовательских полях
Иногда требуется обработать ссылки в пользовательских полях, например, если они содержат внешние ресурсы. Функция ниже добавляет rel="nofollow"
к ссылкам в конкретном пользовательском поле.
add_filter( 'get_post_metadata', 'custom_fields_nofollow', 10, 4 );
function custom_fields_nofollow( $null, $object_id, $meta_key, $single ) {
if ( 'external_link' === $meta_key ) {
$content = get_post_meta( $object_id, $meta_key, true );
return wp_rel_nofollow( $content );
}
return null;
}
Эта функция применит wp_rel_nofollow()
к полю external_link
при его выводе.
Заключение
Функция wp_rel_nofollow()
предоставляет простой способ управления SEO и безопасностью, добавляя rel="nofollow"
ко всем внешним ссылкам. С помощью дополнительных фильтров можно гибко расширить её функциональность, добавив обработку для новых вкладок, предотвращения индексации и дополнительных настроек безопасности.