preprocess_comment
Фильтрует данные комментария перед тем как они будут очищены и добавлены в базу данных. Фильтр срабатывает в самом начале функции, которая добавляет новый комментарий: wp_new_comment().
Использование
add_filter( 'preprocess_comment', 'wp_kama_preprocess_comment_filter' );
/**
* Function for `preprocess_comment` filter-hook.
*
* @param array $commentdata Comment data.
*
* @return array
*/
function wp_kama_preprocess_comment_filter( $commentdata ){
// filter...
return $commentdata;
}
- $commentdata(массив)
Данные добавляемого комментария. Выглядят примерно так:
Array( [comment_post_ID] => 4929 [comment_author] => Kama [comment_author_email] => mail@mail.ru [comment_author_url] => [comment_content] => Текст комментария [comment_type] => [comment_parent] => 0 [user_ID] => 1 [comment_author_IP] => 123.123.123.123 [comment_agent] => Mozilla/5.0 (Windows NT 6.1; Win64; ... )
Примеры
#1 Установим свой тип комментария
Предположим, у нас на сайте есть произвольный тип записей. И нам нужно, чтобы комментарии к этим записям также имели свой, нестандартный тип. Тип комменатрия указывается в поле comment_type таблицы wp_comments.
Этот пример показывает, как установить тип комментария 'for_book', когда комментарий оставляется для типа поста 'book':
// Устанавливаем тип комментария for_book при добавлении комментария
add_filter( 'preprocess_comment', 'set_for_book_comment_type' );
function set_for_book_comment_type( $commentdata ){
$post = get_post( $commentdata['comment_post_ID'] );
if( $post->post_type == 'book' )
$commentdata['comment_type'] = 'for_book';
return $commentdata;
}
Список изменений
| С версии 1.5.0 | Введена. |
| С версии 5.6.0 | Comment data includes the comment_agent and comment_author_IP values. |
Где вызывается хук
preprocess_comment
wp-includes/comment.php 2344
$commentdata = apply_filters( 'preprocess_comment', $commentdata );