get_comment_link() WP 1.5.0

Отримує посилання на вказаний коментар. Посилання генерується з урахуванням деревоподібності. Посилання повертається в хеш на кінці # comment-23 .

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

  • Використовує: get_comment(), щоб отримати дані переданого коменту $comment .

  • Використовує глобальні змінні: $wp_rewrite та $in_comment_loop .
Працює на основі:
get_page_of_comment()
Основа для:
comment_link()
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 (число/рядок)
    Номер сторінки пагінації, на якій знаходиться коментар.

    Якщо вказати це значення, номер поточної сторінки коменту обчислюватися не буде. З версії 4.4.

    Якщо вказати тут 0, то URL не буде части: /comment-page-1.
    За замовчуванням: ”

  • page
    Номер сторінки пагінації, на якій знаходиться коментар. Використовується як попереднє значення для cpage , перш ніж буде обчислено сторінку коментаря. Потрібний зворотної сумісності і з ідеї цей параметр можна не використовувати.
    За замовчуванням: 0

  • type
    Тип коментаря (не прямий).
    За замовчуванням: ‘all’

  • per_page
    Кількість коментарів на сторінці пагінації.
    За замовчуванням: 0

  • max_depth
    Максимальна глибина у деревоподібних коментарів (прямо не використовується).
    За замовчуванням: ”

За замовчуванням: array()

Приклади

0

#1 Приклад того, що отримує функція

echo get_comment_link(17); // http://example.com/frontend-15-hukov/comment-page-1#comment-17
0

#2 Приклад використання у HTML конструкції

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

#3 Видалимо частину сторінки пагінації коментаря з URL

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

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

нотатки

  • Дивіться: get_page_of_comment()
  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.
  • Global. true | false. $in_comment_loop

список змін

З версії 1.5.0Введено.
З версії 4.4.0Added the ability for $comment to as accept a WP_Comment object. Added $cpage argument.

Код get_comment_link() WP 6.0.2

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 );
			}
		}

		/*
		 * Якщо докладна сторінка відображає останні коментарі, листівки для коментарів на докладній сторінці
		 * 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 returned single comment permalink.
	 *
	 * @ Since 2.8.0
	 * @since 4.4.0 Added `$cpage` parameter.
	 *
	 * @see get_page_of_comment()
	 *
	 * @param string $link Примітка permalink with '#comment-$id' appended.
	 * @param WP_Comment $comment поточний comment об'єкт.
	 * @param array $args На array of arguments to override the defaults.
	 * @param int $cpage Зазначений 'cpage' value.
	 */
	return apply_filters( 'get_comment_link', $link, $comment, $args, $cpage);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *