Функция GET_COMMENT_LINK() в WordPress: использование, примеры, параметры

Функция 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() для управления комментариями на вашем сайте.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *