Привет ребята с вами Максим Довбня! В этой статье хочу рассказать как сделать так что бы ссылки на сайт автора комментария и в его содержимом открывались в новом окне без использования плагинов и JavaScript. Уже наверное месяц задавался этим вопросом, но часто оставлял на потом, или ленился искать решение. Но вот вчера мне все же прикипело, я понял на сколько это плохо когда ссылка на сайт автороа комментария открываются в одном окне.
В общем, опять начал искать решение этой проблемы, и нашел наверное самое лучшее что можно было придумать. Сейчас я расскажу не много теории о том как вообще открываются ссылки в новом окне, а потом расскажу про свой способ. Итак, в стилях CSS существует такой атрибут «target='_blank'» это атрибут прописывается в ссылке, и при нажатии на нее, она открывается в новой вкладке. Исходя из этой теории можно предположить что бы ссылки открывались в новом окне нам необходимо прописать эти атрибуты в самой ссылке.
Но что бы их прописать в комментариях, нужно лезть в ядро Wordpress и уже в файле «comment-template.php» к выводу ссылке подставлять эти атрибуты. Этот вариант нам не подходил потому что изменять ядро движка крайне не желательно. Плюс это решение делало 50% того что нам нужно, ссылка автора будет открываться в новой вкладке, но ссылки расположены в тексте комментария по прежнему будет открываться в одном окне.
Второй вариант решение проблемы плагин «Open external links in a new window» который все ссылки как в статье таки и комментариев открывает в новой вкладке. Но этот плагин использует JavaScript и добавляет большой не нужный код в исходный код сайта, который не чего хорошего не принесет. Лично я отказался от такого решения, лишние коды мне на сайте не нужны, и сам плагин хоть не сильно, но нагружает блог. Третий вариант решения проблемы стал хук который прописывается в файле «functions.php» нашей темы. Но найденный мной хук был не рабочий, и я решил где-то найти новый.
Так как я в PHP пока плохо разбираюсь и не знаю API WordPress, я попросил на одном форуме написать хук с помощью которого ссылки на автора, и в комментариях будут открываться новой вкладке. В итоге я получил 2 хука один который открывает ссылку на сайт автора в новом окне. Второй открывает ссылки внутри комментариев также в новой вкладке. Спасибо большое тем ребятам что откликнулись, потому что писать фильтры и функции к WordPress задача не легкая.
Итак, вот первый хук который прописывает в ссылке на сайт автора, те самые теги CSS о которых мы говорили:
add_filter( 'get_comment_author_link', 'wfm_add_author_target' );
function wfm_add_author_target($link){
return preg_replace("#<a([^>\#]+)>(.+?)#", "<a$1 target='_blank'>$2", $link);
}
Вот второй хук, который также прописывает теги только в ссылках самого комментария.
add_filter( 'comment_text', 'wfm_add_comment_target' );
function wfm_add_comment_target($comment){
return preg_replace("#<a([^>\#]+)>(.+?)#", "<a$1 target='_blank'>$2", $comment);
}
Каждый из этих кодов вам необходимо вставить в файле «functions.php» вашей темы и все ссылки комментариев будут открываться в новом окне. Вариант использования хуков я считаю самый лучший, и правильный вариант не только в отношении нашей проблемы, но и в целом для WordPress. Если у вас стоит плагин, то лучше его меняйте на код. На этом у меня все, скоро напишу статью о том почему Google не видит адаптивности вашего шаблона, тема очень интересная.
С Уважением Максим Довбня
Хорошая статья, будет интересна новичкам) Я например, с самого начала это сделал, чтобы не терять посетителя) Хотя на многих блогах до сих пор встречаю эту ошибку
Надеюсь те кто еще допускают эту ошибку, исправятся)
Интересное решение.