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;
}
Для комментов разрешен определенный список полей см. wp_handle_comment_submission():
Свое касомное поле получай через
$_POST['comment_user_edit']и проверить почистить не забудь.Спасибо! В итоге вышло реализовать возможность редактировать комменты для незарегистрированных пользователей..
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; }Конечно это сырой вариант, т.к. нужно сделать еще защиту от перебора и/или подтверждение по почте.