WP_SET_COMMENT_COOKIES() – использование, хуки и возврат данной функции

WP_SET_COMMENT_COOKIES() │ WP 3.4.0

Функция WP_SET_COMMENT_COOKIES() устанавливает куки (имя, электронная почта, URL), которые используются для идентификации неавторизованных пользователей при комментировании.

Хуки функции

  • comment_cookie_lifetime - данный хук позволяет изменить время жизни куки.

Возврат

Функция ничего не возвращает (null).

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

wp_set_comment_cookies( $comment, $user, $cookies_consent );
  • $comment (WP_Comment) (обязательный) — Объект комментария.
  • $user (WP_User) (обязательный) — Объект пользователя автора комментария. Если пользователь уже существует, функция ничего не сделает, чтобы куки сохранялись только для неавторизованных комментаторов.
  • $cookies_consent (true/false) — Согласие автора комментария на хранение куки. По умолчанию: true.

Примеры использования

Пример 1: Настройка куки для комментаторов

По умолчанию куки настраиваются следующим образом в файле wp-comments-post.php:

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

Однако в этом примере мы настроим их отдельно. Например, когда комментарий добавляется не через файл 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.

Код функции wp_set_comment_cookies

Функция wp_set_comment_cookies находится в файле wp-includes/comment.php. Вот как она выглядит:

function wp_set_comment_cookies( $comment, $user, $cookies_consent = true ) {
// Если пользователь уже существует или отказался от куки, не устанавливаем куки
if ( $user->exists() ) {
return;
}

if ( false === $cookies_consent ) {
    // Удалить существующие куки
    $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;
}

/**
 * Фильтрует время жизни куки комментария в секундах.
 *
 * @since 2.8.0
 * @since 6.6.0 Значение по умолчанию изменено с 30000000 на YEAR_IN_SECONDS.
 *
 * @param int $seconds Время жизни куки комментария. По умолчанию YEAR_IN_SECONDS.
 */
$comment_cookie_lifetime = time() + apply_filters( 'comment_cookie_lifetime', YEAR_IN_SECONDS );

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

}

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

Некоторые функции, связанные с комментариями:

  • sanitize_comment_cookies() — Sanitizes comment cookies.
  • wp_get_current_commenter() — Получает информацию о текущем комментаторе.

Комментарии

  • cancel_comment_reply_link() — Ссылка для отмены ответа на комментарий.
  • comment_form() — Форма комментариев.
  • get_comments() — Получает список комментариев.
  • wp_new_comment() — Добавляет новый комментарий.

Эти функции помогут вам лучше управлять комментариями на вашем сайте WordPress и работают в связке с функцией wp_set_comment_cookies.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *