Вопрос или проблема
Я использую классический редактор (не Гутенберг), и WordPress добавляет rel=”noopener noreferrer” ко ВСЕМ ссылкам, независимо от того, указано ли target=”” или target=”_blank” или target=”_self”!
Я хочу убрать noreferrer из моих партнерских ссылок — пожалуйста, помогите! Спасибо!
WordPress предоставляет возможность программно настраивать это, но это делается во время сохранения поста, а не во время его отображения, поэтому изменения применятся только после того, как вы добавите фрагмент кода на свой сайт и заново сохраните свои посты.
И это доступно только с версии WP 5.1+
Вот фрагмент кода (добавьте его в functions.php
вашей темы, если у вас нет другого способа)
add_filter( 'wp_targeted_link_rel', function ( $sRels ) {
$aRels = preg_split( '#\s+#', $sRels );
if ( is_array( $aRels ) ) {
$nKey = array_search( 'noreferrer', array_map( 'strtolower', $sRels ) );
if ( is_numeric( $nKey ) ) {
unset( $aRels[ $nKey ] );
}
$sRels = implode( ' ', $aRels );
}
return $sRels;
}, 10000 );
Снова, после того как это будет добавлено на ваш сайт, вам нужно будет вручную зайти и заново сохранить свои посты, и это должно обновить ваши ссылки, убрав noreferrer
.
Ответ или решение
Чтобы отключить атрибут noreferrer
от всех ссылок в вашем WordPress, вам нужно внести изменения в файл functions.php
вашей темы. Это необходимо, поскольку WordPress автоматически добавляет noopener
и noreferrer
ко всем ссылкам, особенно если они открываются в новой вкладке. Однако, вы можете исключить этот атрибут для определённых ссылок, например, для ваших партнерских ссылок. Ниже приведены шаги для выполнения этой задачи:
-
Откройте файл functions.php: Перейдите в админку WordPress, выберите "Внешний вид" -> "Редактор тем" и откройте файл
functions.php
вашей активной темы. -
Добавьте следующий код: Вставьте следующий код в файл
functions.php
:add_filter( 'wp_targeted_link_rel', function ( $sRels ) { $aRels = preg_split( '#\s+#', $sRels ); if ( is_array( $aRels ) ) { $nKey = array_search( 'noreferrer', array_map( 'strtolower', $sRels ) ); if ( is_numeric( $nKey ) ) { unset( $aRels[ $nKey ] ); // Удаляем 'noreferrer' } $sRels = implode( ' ', $aRels ); } return $sRels; }, 10000 );
-
Сохраните изменения: После добавления кода сохраните изменения в файле
functions.php
. -
Обновите ваши посты: После добавления кода вам необходимо вручную открыть и сохранить каждую публикацию, на которую это изменение должно повлиять. Это нужно для обновления атрибутов ссылок на ваших постах.
Обратите внимание, что данный код удаляет noreferrer
только для ссылок, где он был автоматически добавлен. Если вы хотите дополнительно контролировать добавление атрибутов к конкретным ссылкам, вы можете модифицировать код, добавив условия для проверки URL или других признаков.
Если у вас возникнут дополнительные вопросы или вам потребуется помощь с тестированием изменений, не стесняйтесь обращаться за помощью.