WordPress at a glance

wp_set_comment_cookies() WP 3.4.0

Sets the cookies (name, email, url) that are used to identify an unauthenticated user when commenting.

Hooks from the function
Return

Null. Nothing.

Usage

wp_set_comment_cookies( $comment, $user, $cookies_consent );
$comment(WP_Comment) (required)
Comment object.
$user(WP_User) (required)
Comment author's user object. The function will do nothing if the user exists — so that the cookies are saved only to unauthenticated commenters.
$cookies_consent(true/false)
Comment author's consent to store cookies.
Default: true

Examples

#1 Setup commenter cookies

By default, cookies are set up using following action in wp-comments-post.php file:

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

But in this example we will set up them separately. For example, when the comment is posted (added) not through the wp-comments-post.php file:

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

wp_set_comment_cookies( $comment, $user );

Changelog

Since 3.4.0 Introduced.
Since 4.9.6 The $cookies_consent parameter was added.

Code of wp set comment cookies: wp-includes/comment.php WP 5.2.2

<?php
function wp_set_comment_cookies( $comment, $user, $cookies_consent = true ) {
	// If the user already exists, or the user opted out of cookies, don't 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 the lifetime of the comment cookie in seconds.
	 *
	 * @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 );
}

Related Functions

From tag: comment_cookies

More from category: Comments

vladlu 100vlad.lu
Editors: kama 100
No comments
    Hello, !     Log In . Register