Уверен, что существует сотня различных способов, для чего это может понадобится. Но лично мне это пригодилось, когда я захотел, чтобы после того, как пользователь оставил комментарий, его данные автоматически заполнялись на странице контактов в форме обратной связи.
Я подготовил для вас функцию, которая возвращает сразу массив со всеми данными автора комментария: его именем, адресом электронной почты и адресом сайта (если он конечно указал его).
Функцию можете вставить в 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
(это только в том случае, если какой-либо из элементов массива будет отсутствовать, к примеру тот же «сайт»).