Функция GET_COMMENT_LINK() в WordPress
Функция get_comment_link() позволяет получить ссылку на конкретный комментарий на вашем сайте WordPress.
Использование функции
Синтаксис
get_comment_link( $comment, $args );
Параметры
- $comment (WP_Comment | int | null): Комментарий, для которого нужно получить ссылку. По умолчанию используется текущий комментарий.
- $args (array): Массив с необязательными параметрами для переопределения значений по умолчанию. По умолчанию — пустой массив.
Аргументы массива $args
- type (string): Передается функции
get_page_of_comment(). - page (int): Текущая страница комментариев, используется для вычисления постраничной навигации.
- per_page (int): Количество комментариев на страницу.
- max_depth (int): Передается функции
get_page_of_comment(). - cpage (int | string): Значение для параметра "comment-page" или "cpage". Если указано, оно будет использоваться вместо значений из параметров
pageиper_page.
Примеры использования функции
Пример 1: Получение ссылки на комментарий
echo get_comment_link(17);
// Вернет: http://example.com/frontend-15-hukov/comment-page-1#comment-17
Пример 2: Использование в HTML
комментарии к посту
Пример 3: Удаление части URL с постраничной навигацией
Предположим, мы знаем, что комментарий находится на первой странице, и задаем параметр cpage=0, чтобы избежать добавления /comment-page-1 в URL:
echo get_comment_link( $comm, [ 'cpage' => 0 ] );
// Вернет: https://wp-kama.ru/question/vyvod-postov#comment-234
Пример 4: Ссылка на комментарий с датой
$posted_on = sprintf( __( 'Опубликовано %1$s в %2$s', 'textdomain' ),
get_comment_date( 'F j, Y' ), get_comment_time( 'g:ia' )
);
echo sprintf( '%2$s', esc_url( get_comment_link() ), $posted_on );
Замечания
- Функция
get_page_of_comment()используется для нахождения страницы, на которой расположен комментарий. - Глобальные переменные:
$wp_rewrite: Указывает на компонент перезаписи WordPress.$in_comment_loop: Логическое значение, указывающее на то, находимся ли мы в цикле комментариев.
Изменения в функции
- С версии 1.5.0: Функция была введена.
- С версии 4.4.0: Добавлена возможность передавать объект
WP_Commentв качестве параметра$comment. Параметр$cpageбыл добавлен.
Код функции
Функция находится в файле wp-includes/comment-template.php и выглядит следующим образом:
function get_comment_link( $comment = null, $args = array() ) {
global $wp_rewrite, $in_comment_loop;
$comment = get_comment( $comment );
// Проверка на обратную совместимость.
if ( ! is_array( $args ) ) {
$args = array( 'page' => $args );
}
$defaults = array(
'type' => 'all',
'page' => '',
'per_page' => '',
'max_depth' => '',
'cpage' => null,
);
$args = wp_parse_args( $args, $defaults );
$comment_link = get_permalink( $comment->comment_post_ID );
// Параметр 'cpage' имеет приоритет.
if ( ! is_null( $args['cpage'] ) ) {
$cpage = $args['cpage'];
} else {
if ( '' === $args['per_page'] && get_option( 'page_comments' ) ) {
$args['per_page'] = get_option( 'comments_per_page' );
}
if ( empty( $args['per_page'] ) ) {
$args['per_page'] = 0;
$args['page'] = 0;
}
$cpage = $args['page'];
if ( '' === $cpage ) {
if ( ! empty( $in_comment_loop ) ) {
$cpage = (int) get_query_var( 'cpage' );
} else {
$cpage = get_page_of_comment( $comment->comment_ID, $args );
}
}
if ( 'oldest' === get_option( 'default_comments_page' ) && 1 === $cpage ) {
$cpage = '';
}
}
if ( $cpage && get_option( 'page_comments' ) ) {
if ( $wp_rewrite->using_permalinks() ) {
if ( $cpage ) {
$comment_link = trailingslashit( $comment_link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage;
}
$comment_link = user_trailingslashit( $comment_link, 'comment' );
} elseif ( $cpage ) {
$comment_link = add_query_arg( 'cpage', $cpage, $comment_link );
}
}
if ( $wp_rewrite->using_permalinks() ) {
$comment_link = user_trailingslashit( $comment_link, 'comment' );
}
$comment_link = $comment_link . '#comment-' . $comment->comment_ID;
return apply_filters( 'get_comment_link', $comment_link, $comment, $args, $cpage );
}
Связанные функции
- add_comment_meta(): Добавляет мета-данные к комментарию.
- clean_comment_cache(): Очищает кэш комментария.
- comment_link(): Получает ссылку на комментарий.
- get_comment_author(): Получает имя автора комментария.
- get_comments_link(): Получает ссылку на страницу комментариев.
- have_comments(): Проверяет, есть ли комментарии.
Эта информация поможет вам лучше понять, как использовать функцию get_comment_link() для управления комментариями на вашем сайте.