• Здравствуйте. Для НЕавторизированных пользователей сделал следующее: изменил стандартные надписи и убрал обязательное поле e-mail через хуки:

    function wph_comments_form($default) {
    	$commenter = wp_get_current_commenter();
    	$req = get_option( 'require_name_email' );
    	$aria_req = ( $req ? " aria-required='true'" : '' );
    
        $default['logged_in_as'] = '';
        $default['title_reply'] = 'Я хочу добавить несколько слов о преподавателе:';
    	$default['label_submit'] = 'Ок';
    	$default['comment_notes_before'] = '<p style="font-size:10px;">Вся информация, добавленная Вами, полностью конфиденциальна</p>';
        return $default;
    }
    add_filter('comment_form_defaults','wph_comments_form',999);
    function remove_url_from_comments($fields) {
    	unset($fields['url']);
    	unset($fields['email']);
    	return $fields;
    }
    add_filter("comment_form_default_fields", "remove_url_from_comments");

    Затем сделал (нашел в инете) хук на проверку, чтоб поле «Имя» было заполнено:

    function custom_validate_comment_author() {
    	if( empty( $_POST['author'] ) || ( !preg_match( '/[^\s]/', $_POST['author'] ) ) ) wp_die( __('Ошибка! Пожалуйста, заполните поле "Имя"') );
    }
    add_action( 'pre_comment_on_post', 'custom_validate_comment_author',10,2);

    Если пользователь НЕавторизован, то все ок.
    Но возникает следующая проблема. В случае, если авторизовавшийся пользователь (а у него только форма с полем коммента, без поле «Имя») что-то напишет, подтвердит, генерится через последний хук ошибка о том, что поле «Имя» не заполнено (которого для авторизовавшихся нет). Вижу 2 решения этой проблемы:
    1. последний хук должен проверять только для неавторизированных пользователей.
    2. добавить в форму для авторизированных пользователей поле «имя»
    Без понятий, как сделать то или другое, и поисковые запросы в гугле не привели к удаче. Как это можно сделать? Подскажите, пожалуйста

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Если я правильно понял вот то что Вам надо:

    
    /*Удаляем поле сайт и е-маил в комментариях*/
    function remove_comment_fields($fields) { 
    unset($fields['url']); 
    unset($fields['email']);
    return $fields; 
    } 
    add_filter('comment_form_default_fields', 'remove_comment_fields');
    
    /*Добавляем обязательно указать имя в комментариях для НЕавторизированных*/
    /*И что хотите для авторизированных*/
    function custom_validate_comment_author() {
    if ( is_user_logged_in() ) {
    	echo 'Вы авторизованы на сайте!';
    }
    else {
    	echo 'Вы всего лишь пользователь!';
    	if( empty( $_POST['author'] ) || ( !preg_match( '/[^\s]/', $_POST['author'] ) ) ) 
    	wp_die( __('Ошибка! Пожалуйста, заполните поле "Имя".') ); 
    	} 
    } 
    add_action( 'pre_comment_on_post', 'custom_validate_comment_author' );
    

    Вот и ВСЁ)))

    • Ответ изменён 9 лет, 7 месяцев назад пользователем promsckij.
    • Ответ изменён 9 лет, 7 месяцев назад пользователем promsckij.
    • Ответ изменён 9 лет, 7 месяцев назад пользователем Sergey Biryukov.

    автор топика наверняка безмерно рад найденному решению его проблемы.

Просмотр 2 ответов — с 1 по 2 (всего 2)

Тема «Форма комментариев для авторизированных пользователе» закрыта для новых ответов.