WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com

get_comment_link() WP 1.5.0

Получает ссылку на указанный комментарий. Ссылка генерируется с учетом древовидности. Ссылка возвращается в хэшем на конце #comment-23.

Не путайте с get_comments_link(), которая возвращает ссылку (с якорем) на все комментарии к определенному посту.

  • Использует: get_comment() чтобы получить данные переданного коммента $comment.

  • Использует глобальные переменные: $wp_rewrite и $in_comment_loop.
Является основой для: comment_link()
Работает на основе: get_page_of_comment()
✈ 1 раз = 0.002977с = очень медленно | 50000 раз = 5.21с = быстро PHP 7.0.8, WP 4.6.1

Хуков нет.

Возвращает

Строку, УРЛ на указанный комментарий. Значение возвращается, а не выводиться на экран.

Использование

$link = get_comment_link( $comment, $args );
$comment(число/объект) (обязательный)
ID/объект комментария, ссылку на который нужно получить.
По умолчанию: null
$args(массив)

Аргументы. По умолчанию используются:

  • cpage (число/строка)
    Номер страницы пагинации на которой находится комментарий.

    Если указать это значение, то номер текущей страницы коммента вычисляться не будет. C версии 4.4.

    Если указать тут 0, то в URL не будет части: /comment-page-1.
    По умолчанию: ''

  • page
    Номер страницы пагинации на которой находится комментарий. Используется как предварительное значение для параметра cpage, перед тем как будет вычислена страница комментария. Нужен для обратной совместимости и по идее этот параметр можно совсем не использовать.
    По умолчанию: 0

  • type
    Тип комментария (на прямую не используется).
    По умолчанию: 'all'

  • per_page
    Количество комментариев на странице пагинации.
    По умолчанию: 0

  • max_depth
    Максимальная глубина у древовидных комментариев (напрямую не используется).
    По умолчанию: ''

По умолчанию: array()

Примеры

#1 Пример того, что получает функция

echo get_comment_link(17); // https://site.ru/frontend-15-hukov/comment-page-1#comment-17

#2 Пример использования в HTML конструкции

<a href="<?php echo get_comments_link( $comment ); ?>">
	комментарии к посту
</a>

#3 Удалим часть страницы пагинации комментария из URL

Допустим мы заранее знаем, что коммент находится на первой странице и чтобы в URL не добавлялось лишнее /comment-page-1, укажем параметр cpage=0 (при этом страница пагинации вычисляться не будет):

echo get_comment_link($comm, [ 'cpage'=>0 ]); // https://wp-kama.ru/question/vyvod-postov#comment-234

Код get_comment_link: wp-includes/comment-template.php VER 5.0.1

<?php
function get_comment_link( $comment = null, $args = array() ) {
	global $wp_rewrite, $in_comment_loop;

	$comment = get_comment($comment);

	// Back-compat.
	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 );

	$link = get_permalink( $comment->comment_post_ID );

	// The 'cpage' param takes precedence.
	if ( ! is_null( $args['cpage'] ) ) {
		$cpage = $args['cpage'];

	// No 'cpage' is provided, so we calculate one.
	} 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 = get_query_var( 'cpage' );
			} else {
				// Requires a database hit, so we only do it when we can't figure out from context.
				$cpage = get_page_of_comment( $comment->comment_ID, $args );
			}
		}

		/*
		 * If the default page displays the oldest comments, the permalinks for comments on the default page
		 * do not need a 'cpage' query var.
		 */
		if ( 'oldest' === get_option( 'default_comments_page' ) && 1 === $cpage ) {
			$cpage = '';
		}
	}

	if ( $cpage && get_option( 'page_comments' ) ) {
		if ( $wp_rewrite->using_permalinks() ) {
			if ( $cpage ) {
				$link = trailingslashit( $link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage;
			}

			$link = user_trailingslashit( $link, 'comment' );
		} elseif ( $cpage ) {
			$link = add_query_arg( 'cpage', $cpage, $link );
		}

	}

	if ( $wp_rewrite->using_permalinks() ) {
		$link = user_trailingslashit( $link, 'comment' );
	}

	$link = $link . '#comment-' . $comment->comment_ID;

	/**
	 * Filters the returned single comment permalink.
	 *
	 * @since 2.8.0
	 * @since 4.4.0 Added the `$cpage` parameter.
	 *
	 * @see get_page_of_comment()
	 *
	 * @param string     $link    The comment permalink with '#comment-$id' appended.
	 * @param WP_Comment $comment The current comment object.
	 * @param array      $args    An array of arguments to override the defaults.
	 * @param int        $cpage   The calculated 'cpage' value.
	 */
	return apply_filters( 'get_comment_link', $link, $comment, $args, $cpage );
}

Cвязанные функции

Из метки: comment (комментарии)

Еще из раздела: Фиды

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться