Как убрать автора из ссылки Discord, если сайт на wp?

Автор:
Руслан Шкарбан — автор статьи Руслан Шкарбан
#Советы

Вопрос

У меня сайт на WordPress. Если я делюсь ссылкой с него в Discord, то он показывает автора страницы, не только для статей, но и для любых страниц сайта. Как отключить это?

Ответ

Автор вопроса не прислал скриншот, поэтому для наглядности смоделируем ситуацию: поделимся в Discord ссылкой с разработанного нами сайта-агрегатора perevod.spb.ru.

Автор на превью ссылки агрегатора

В прогрузившейся ссылке получаем не только title и description, но и имя того, кто создал эту страницу на сайте.

Причина

Происходит это из-за того, что WordPress (далее WP) был движком, который изначально применялся для блогов, и в данном случае мы видим тянущееся за ним наследие. Если ваш сайт не требует отображения информации об авторах, как, например, в блогах с несколькими авторами или журналах, то такой функционал окажется излишним.

Рассмотрим второй пример такой же ситуации, но уже на другом сайте — интернет-магазине по продаже пиломатериалов: shop.szpk78.ru. Делимся ссылкой и в превью получаем имя автора страницы. В данном случае такой функционал сайту абсолютно не нужен.

Автор на превью ссылки магазина

Решение

Обуздать такое поведение WP возможно двумя способами: использованием плагина для SEO или куском собственного кода. Рассмотрим оба варианта.

Решение с написанием кода

Начнем с решения, для которого нам понадобиться написать небольшой код. Мы воспользуемся хуком-фильтром WP oembed_response_data. Используя данный хук,мы получим данные oEmbed и уберем из них автора страницы.

oEmbed - это открытый формат, созданный для упрощения встраивания содержимого одной веб-страницы в другую. В роли контента могут выступать: фотографии, видеоролики, ссылки и другой контент. Например, если вы хотите вставить видео с YouTube на сайт, просто вставьте URL этого контента, и WordPress, используя oEmbed преобразует его в привычный плеер.

Узнать о oEmbed подробнее можно на официальном сайте.

В качестве параметров хука мы используем только вызов функции, которой удаляем лишние параметры oEmbed. Список всех параметров хука вы можете посмотреть в документации.

Для удаления данных напишем функцию, в которой удаляем информацию об авторе из передаваемых данных oEmbed:

		add_filter( 'oembed_response_data', 'ctr99_remove_author' );
		function ctr99_remove_author( $data ) {
			unset($data['author_url']);
			unset($data['author_name']);
			return $data;
		} 
	

Хук-фильтр позволяет изменить данные, которые передает WP вместе с контентом записи в формате oEmbed.В нашей функции мы убираем данные об авторе, удалив нужные ключи из массива. Затем возвращаем измененные данные.

Кусок кода добавляем в файл functions.php. Discord может не обновить данные сразу, поэтому для проверки можно воспользоваться сервисом Iframely. Данный подход имеет место, в случае, если вы не используете плагины и все SEO пишите самостоятельно.

Без автора на превью>

Решение с использованием SEO плагина

Рассмотрим более простой вариант — использование SEO плагина.

Большинство SEO плагинов также "чистят" информацию от неподходящего контента. Для примера возьмем The SEO Framework.

Находим плагин в магазине расширений WordPress, устанавливаем и активируем. Делимся ссылкой в Discord. Как и в прошлом случае, изменения сразу не отобразятся, для проверки можно использовать тот же сервис, что и в первом варианте.

Без автора на превью>

Воспользовавшись одним из вариантов, мы получаем превью ссылки без автора, как и требовалось. С этим разобрались, а если у вас есть вопросы, то задавайте их в комментариях, постараемся помочь.