comment_reply_link()
Выводит ссылку <a>, которая позволяет отвечать на комментарий. Тег используется в цикле комментариев, для каждого комментария.
Если подключен JavaScript comment-reply.js, то этот Тег шаблона будет передвигать форму комментирования под комментарий на который пользователь решил ответить.
Функция предназначена для использования внутри цикла комментариев.
Хуков нет.
Возвращает
null
. Выводит на экран код ссылки.
Использование
<?php comment_reply_link( $args, $comment, $post ); ?>
- $args(массив)
- Различные параметры, влияющие на отображение ссылки.
По умолчанию: предустановки - $comment(число)
- ID комментария на который будем отвечать.
По умолчанию: null - $post(число)
- ID поста для которого показывается ссылка.
По умолчанию: null
Аргументы параметра $args
- add_below(строка)
- Название префикса для контейнера комментария. По умолчанию
comment
, означает что форма будет передвигаться под контейнер с атрибутом id="comment-23" (23 ID комментария на который отвечаем).
По умолчанию: 'comment' - respond_id(строка)
- Значение атрибута id контейнера формы комментирования. Т.е. если указано
respond
, то по нажатию на ссылку блок с id="respond" будет передвигаться (это блок формы комментирования).
По умолчанию: 'respond' - reply_text(строка)
- Текст ссылки.
По умолчанию: __('Reply') - login_text(строка)
- Текст ссылки, который показывается когда для того чтобы оставить комментарий нужно зарегистрироваться.
По умолчанию: __('Log in to Reply') - depth(число)
- Глубина комментариев для которых ссылка будет показана. Для древовидных комментариев. Если указать, например 3, то для комментария с глубиной вложенности 4 ссылка уже не будет отображаться.
По умолчанию: 0 - before(строка)
- Текст или html, которые нужно добавить перед ссылкой.
- after(строка)
- Текст или html, которые нужно добавить после ссылкой.
По умолчанию: array()
Примеры
#1 Подключаем comment-reply.js только где он нужен:
Второй пример немного упрощенный. Этот пример также подключает скрипт, но прежде чем его подключить проверяет действительно ли он нужен. В условии if проверяется: страница записи ли это (is_singular), и открыты ли комментарии для этой страницы (comments_open) и включена ли опция древовидных комментариев (get_option). Если все эти условия не соблюдаются, то логично, что этот скрипт не нужен, поэтому он не будет подключен:
function enqueue_comment_reply() { if( is_singular() && comments_open() && (get_option('thread_comments') == 1) ) wp_enqueue_script('comment-reply'); } add_action( 'wp_enqueue_scripts', 'enqueue_comment_reply' );
#2 Ссылка для ответа на комментарий
Выведем ссылку для ответа на комментарий максимального уровня вложенности - 5, и изменим текст ссылки на "ответить на комментарий":
<?php comment_reply_link( [ 'reply_text' => "ответить на комментарий", 'depth' => 5 ] ); ?>
Выведет подобную ссылку:
<a rel="nofollow" class="comment-reply-link" href="#comment-5296" data-commentid="5296" data-postid="1222" data-belowelement="comment-5296" data-respondelement="respond" aria-label="Комментарий к записи Цифровой">Ответить</a>
#3 Подключаем comment-reply.js
По клике на ссылку, которую выводит comment_reply_link() пользователя должно перекинуть к форме ответа на комментарий. Но если подключить скрипт comment-reply.js, то при клике на эту ссылку форма ответа на комментарий должна сама подвинуться под текущий комментарий.
Чтобы подключить скрипт comment-reply.js, который находится в файлах движка, нужно добавить такую строку в header.php:
if( is_singular() ) wp_enqueue_script('comment-reply');
Или лучше добавить в funcions.php такой код:
function enqueue_comment_reply() { if( is_singular() ) wp_enqueue_script('comment-reply'); } add_action( 'wp_enqueue_scripts', 'enqueue_comment_reply' );
#4 Замена класса CSS в ссылке ответа с помощью хука
add_filter( 'comment_reply_link', 'wpdocs_comment_reply_link_class' ); function wpdocs_comment_reply_link_class( $class ) { $class = str_replace( "class='comment-reply-link", "class='comment-reply-link your-class-name", $class ); return $class; }
Заметки
- Смотрите: get_comment_reply_link()
Список изменений
С версии 2.7.0 | Введена. |
Код comment_reply_link() comment reply link WP 6.6.1
function comment_reply_link( $args = array(), $comment = null, $post = null ) { echo get_comment_reply_link( $args, $comment, $post ); }