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 7.0.2
function comment_reply_link( $args = array(), $comment = null, $post = null ) {
echo get_comment_reply_link( $args, $comment, $post );
}