get_comment_reply_link() WP 2.7.0

Отримує посилання <a> , яке дозволяє відповідати на коментар. Використовується у циклі коментарів.

Якщо підключений JavaScript comment-reply.js , цей клік за посиланням буде переміщати форму коментування під коментар на який користувач хоче відповісти.

Повертає

Строку|false|null. Нічого/false/рядок. Посилання для показу форми коментування у разі успіху. False, якщо коментування закрите.

Використання

get_comment_reply_link( $args, $comment, $post );
$args
(масив)
Параметри, що впливають на відображення посилання. Див. нижче.


За замовчуванням: попереднє встановлення
$comment
(число/WP_Comment)
ID коментаря, на який потрібно відповідати. За промовчанням поточний коментар у циклі.

З версії 4.4. можна передавати об’єкт коментарі
WP_Comment .


Типово: null
$post
(число/WP_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()

Приклади

0

#1 Посилання для відповіді на коментар

Виведемо посилання для відповіді на коментар максимального рівня вкладеності – 5, та змінимо текст посилання на “відповісти на коментар”:

$link = get_comment_reply_link([
	'reply_text' => "відповісти на коментар",
	'respond_id' => 'comment',
	'depth' => 5,
	'max_depth' => 10,
], 2881, 631);

// Тут можемо обробити посилання перед виведенням на екран
//$link = str_replace( 'foo', 'bar', $link );

echo $link;

Виведе такий html код:

<a
 rel='nofollow'
 class='comment-reply-link'
 href='/function/comment_reply_link?replytocom=2881#comment'
 onclick='return addComment.moveForm( "comment-2881", "2881", "comment", "631" )'
 aria-label='Коментар до запису Володимир'
>
відповісти на коментар
</a>

список змін

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

get comment reply link WP 6.0.2

function get_comment_reply_link( $args = array(), $comment = null, $post = null ) {
	$defaults = array(
		'add_below' => 'comment',
		'respond_id' => 'respond',
		'reply_text' => __( 'Reply' ),
		/* translators: Comment reply button text. %s: Comment author name. */
		'reply_to_text' => __( 'Reply to %s' ),
		'login_text' => __( 'Log in to Reply' ),
		'max_depth' => 0,
		'depth' => 0,
		'before' => '',
		'after' => '',
	);

	$ args = wp_parse_args ($ args, $ defaults);

	if ( 0 == $args['depth'] || $args['max_depth'] <= $args['depth'] ) {
		return;
	}

	$ comment = get_comment ($ comment);

	if ( empty( $comment ) ) {
		return;
	}

	if (empty($post)) {
		$post = $comment->comment_post_ID;
	}

	$post = get_post($post);

	if ( ! comments_open( $post->ID ) ) {
		return false;
	}

	if ( get_option( 'page_comments' ) ) {
		$permalink = str_replace( '#comment-' . $comment->comment_ID, '', get_comment_link( $comment ) );
	} else {
		$permalink = get_permalink( $post->ID );
	}

	/**
	 * Filters the comment reply link arguments.
	 *
	 * @ Since 4.1.0
	 *
	 * @param array $args Comment reply link arguments. See get_comment_reply_link()
	 * for more information on accepted arguments.
	 * @param WP_Comment $comment Об'єкт зроблений за допомогою replied to.
	 * @param WP_Post $post The WP_Post об'єкт.
	 */
	$args = apply_filters( 'comment_reply_link_args', $args, $comment, $post );

	if ( get_option( 'comment_registration' ) && ! is_user_logged_in() ) {
		$link = sprintf(
			'<a rel="nofollow" class="comment-reply-login" href="%s">%s</a>',
			esc_url( wp_login_url( get_permalink() ) ),
			$args['login_text']
		);
	} else {
		$ data_attributes = array (
			'commentid' => $comment->comment_ID,
			'postid' => $post->ID,
			'belowelement' => $args['add_below'] . '-'. $comment->comment_ID,
			'respondelement' => $args['respond_id'],
			'replyto' => sprintf( $args['reply_to_text'], get_comment_author( $comment ) ),
		);

		$data_attribute_string = '';

		foreach ( $data_attributes as $name => $value ) {
			$data_attribute_string .= " data-${name}="" . esc_attr( $value ) . '"';
		}

		$ data_attribute_string = trim ( $ data_attribute_string );

		$link = sprintf(
			"<a rel='nofollow' class='comment-reply-link' href='%s' %s aria-label='%s'>%s</a>",
			esc_url(
				add_query_arg(
					array(
						'replytocom' => $comment->comment_ID,
						'unapproved' => false,
						'moderation-hash' => false,
					),
					$permalink
				)
			). '#'. $args['respond_id'],
			$data_attribute_string,
			esc_attr( sprintf( $args['reply_to_text'], get_comment_author( $comment ) ) ),
			$args['reply_text']
		);
	}

	/**
	 * Filters the comment reply link.
	 *
	 * @ Since 2.7.0
	 *
	 * @param string $link HTML-маркування для переказу повідомлень.
	 * @param array $args На array of arguments overriding the defaults.
	 * @param WP_Comment $comment Об'єкт зроблений replied.
	 * @param WP_Post $post The WP_Post об'єкт.
	 */
	return apply_filters( 'comment_reply_link', $args['before'] . $link . $args['after'], $args, $comment, $post );
}

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

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