wp_set_comment_cookies() WP 3.4.0

Встановлює cookie (ім’я, пошту, сайт), які використовуються для ідентифікації неавторизованого користувача під час коментування.

Хуки з функції

Повертає

null.

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

wp_set_comment_cookies ($ comment, $ user);
$comment
(WP_Comment) (обов’язковий)
Об’єкт коментаря.
$user
(об’єкт) (обов’язковий)

Об’єкт автора коментаря.

Функція нічого не робитиме, якщо вказаний користувач існує. Це робиться для того, щоб кукі зберігалися тільки для неавторизованих коментаторів.

$cookies_consent
(true/false)
Чи погодився автор коментаря зберігати куки.


Default: true

Приклади

0

#1 Встановлення куків коментатора

Взагалі WordPress такі куки встановлюються при публікації коментаря, через подію

do_action( 'set_comment_cookies', $comment, $user);

у файліwp-comments-post.php

Але в цьому прикладі ми встановимо їх окремо, наприклад, коли ми публікуємо коментар не через файл wp-comments-post.php, а якось по-своєму…

$user = wp_get_current_user();
$ comment = get_comment ($ id = 255);

wp_set_comment_cookies ($ comment, $ user);

список змін

З версії 3.4.0Введено.
З версії 4.9.6$cookies_consent parameter був added.

Код wp_set_comment_cookies() WP 6.0.2

function wp_set_comment_cookies( $comment, $user, $cookies_consent = true ) {
	// Якщо користувачі існують, або користувачі, які використовуються з cookie, не мають set cookies.
	if ( $user->exists() ) {
		return;
	}

	if ( false === $cookies_consent ) {
		// Remove any existing cookies.
		$past = time() - YEAR_IN_SECONDS;
		setcookie( 'comment_author_' . COOKIEHASH, '', $past, COOKIEPATH, COOKIE_DOMAIN );
		setcookie( 'comment_author_email_' . COOKIEHASH, '', $past, COOKIEPATH, COOKIE_DOMAIN );
		setcookie( 'comment_author_url_' . COOKIEHASH, '', $past, COOKIEPATH, COOKIE_DOMAIN );

		return;
	}

	/**
	 * Filters lifetime of comment cookie в секундах.
	 *
	 * @ Since 2.8.0
	 *
	 * @param int $seconds Comment cookie lifetime. Default 30000000.
	 */
	$comment_cookie_lifetime = time() + apply_filters( 'comment_cookie_lifetime', 30000000);

	$secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );

	setcookie( 'comment_author_' . COOKIEHASH, $comment->comment_author, $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure );
	setcookie( 'comment_author_email_' . COOKIEHASH, $comment->comment_author_email, $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure );
	setcookie( 'comment_author_url_' . COOKIEHASH, esc_url( $comment->comment_author_url ), $comment_cookie_lifetime, COOKIEPATH, COOKIE_DOMAIN, $secure );
}

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

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