Как вытащить данные автора комментария из его кукисов (Имя, Email, URL) ?

Владислав Белецкий
Владислав Белецкий .
Категория:
Комментариев: 0

Уверен, что существует сотня различных способов, для чего это может понадобится. Но лично мне это пригодилось, когда я захотел, чтобы после того, как пользователь оставил комментарий, его данные автоматически заполнялись на странице контактов в форме обратной связи.

Я подготовил для вас функцию, которая возвращает сразу массив со всеми данными автора комментария: его именем, адресом электронной почты и адресом сайта (если он конечно указал его).

Функцию можете вставить в functions.php вашей темы WordPress.

function true_comment_avtor_info() {
	if( is_user_logged_in() )
		return false; // возвращаем false, если пользователь авторизован
 
	$info = array(); // наш будущий массив с данными комментатора
 
	foreach( $_COOKIE as $kluch => $znachenie ) { // прокручиваем кукисы в цикле
 
		if ( strpos( ' ' . $kluch, 'comment_author_email' ) > 0 ) { // если емайл совпадает
        		$info['email'] = urldecode( $znachenie );
        	} elseif ( strpos( ' ' . $kluch, 'comment_author_url' ) > 0 ) { // если URL совпадает
        		$info['sait'] = urldecode( $znachenie );
        	} elseif ( strpos( ' ' . $kluch, 'comment_author' ) > 0 ) { // иначе если автор
       			$info['avtor'] = urldecode( $znachenie );
       		}
 
	}
	return $info; // возвращаем массив с результатом
}

Несколько комментариев:

А теперь давайте применим эту функцию к тому примеру с формой обратной связи, про который я говорил в самом начале.

<?php
	$avtor = true_comment_avtor_info();
?>
<form action="https://misha.agency" method="POST">
	<input type="text" name="avtor" value="<?php if( isset( $avtor['avtor'] ) ) echo $avtor['avtor'] ?>" />
	<input type="email" name="email" value="<?php if( isset( $avtor['email'] ) ) echo $avtor['email'] ?>" />
	<textarea name="soobchenie"></textarea>
	<button>Отправить письмо</button>
</form>

Я также добавил проверку через isset() для того, чтобы на вашем сайте не появлялись уведомления из серии Notice: Undefined index: при включенном параметре WP_DEBUG в файле wp-config.php (это только в том случае, если какой-либо из элементов массива будет отсутствовать, к примеру тот же «сайт»).

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии