Штатная функция WordPress для скрытия email-адресов на сайте

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

Причины по которым возникает необходимость скрыть свой email-адрес могут разными, как не попадание адреса в индекс поисковых систем, так и нежелание получать спам.

К счастью, разработчики WordPress позаботились о том, чтобы мы могли скрыть email-адрес не затрудняя общение с пользователями. Движок обладает встроенной функцией antispambot(), в ней можно передавать любой адрес электронной почты и получать на выходе тот же самый адрес перекодированный в спецсимволы.

В результате посетитель сайта увидит обычный email-адрес и сможет его скопировать, а боты и пауки просматривающие код страницы увидят зашифрованную строку, совершенно не похожую на email-адрес, примерно такую:

1
<a href="mailto:&#109;%6d%#46;c%6f%6d">%6d%65&#64;&#109;&#121;s%69te&#46;%63%6fm</a>

Чтобы воспользоваться функцией antispambot() необходимо добавить следующий код в файл functions.php вашей активной темы:

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * Hide email from Spam Bots using a shortcode.
 */
 
function wpcodex_hide_email_shortcode( $atts , $content = null ) {
        if ( ! is_email( $content ) ) {
                return;
        }
 
        return '<a href="mailto:' . antispambot( $content ) . '">' . antispambot( $content ) . '</a>';
}
add_shortcode( 'email', 'wpcodex_hide_email_shortcode' );

Вызов функции осуществляется так:

1
2
3
4
<?php
echo antispambot( 'myemail@mysite.com' ); 
 
?>

Вызвать функцию можно в любом месте сайта, в значение подставить ваш email-адрес. Если необходимо вызывать функцию прямо из статьи, то используйте такой код:

1
[email]myemail@mysite.com[/email]

Обфускация — это запудривание кода, его маскировка, этот термин очень хорошо объясняет наши манипуляции с email-адресами.