WordPress как на ладони
Прибыльная монетизация. Выгодно. Безопасно. Стабильно.

Per preprocess_comment — как получить значение кастомного поля

Передал в форму комментария скрытое поле через "comment_form_default_fields"

$fields['comment_user_edit'] = '<input id="comment_user_edit" name="comment_user_edit" type="hidden" value="" />';

В базу данных всё заноситься, но не могу проверить заполнено ли оно через хук фильтр "preprocess_comment" т.к. не нашел его в массиве $comment.

Подскажите кто в курсе как правильно проверить это поле при отправке коммента и блокнуть при определенных условиях..

add_filter( 'preprocess_comment', 'wpb_preprocess_comment' );
function wpb_preprocess_comment($comment) {
	if ($comment['comment_user_edit']) {
		wp_die( '<p>Сообщение юзеру</p>
	<div style="text-align: center;"><input type="button" onclick="history.back();" value="Вернуться к сообщению"/></div>' );
	}
	return $comment;
}
0
mi13
6 дней назад 62
  • 1
    Kama9026

    Для комментов разрешен определенный список полей см. wp_handle_comment_submission():

    Свое касомное поле получай через $_POST['comment_user_edit'] и проверить почистить не забудь.

    mi13 6 дней назад

    Спасибо! В итоге вышло реализовать возможность редактировать комменты для незарегистрированных пользователей..

    add_filter( 'preprocess_comment', 'wpb_preprocess_comment' );
    function wpb_preprocess_comment($comment) {
    	if( isset( $_POST['comment_user_edit'] ) && !empty( $_POST['comment_user_edit'] ) ) {
    		$id = sanitize_text_field($_POST['comment_user_edit']);
    		$author_email = $id>0 ? get_comment_author_email($id) : '';
    		$email = $comment['comment_author_email'];
    		if( $author_email <> $email ) {
    			wp_die( '<p style="text-align: center;">Access denied!</p>
    	<div style="text-align: center;"><input type="button" onclick="history.back();" value="Вернуться к сообщению"/></div>' );
    		}
    	}
    	return $comment;
    }

    Конечно это сырой вариант, т.к. нужно сделать еще защиту от перебора и/или подтверждение по почте.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация