WordPress как на ладони
wordpress jino

preprocess_comment хук-фильтр . WP 1.5.2

Фильтрует данные комментария перед тем как они будут очищены и добавлены в базу данных. Фильтр срабатывает в самом начале функции, которая добавляет новый комментарий: wp_new_comment().

Использование

add_filter( 'preprocess_comment', 'filter_function_name_11' );
function filter_function_name_11( $commentdata ) {
	// Фильтр...

	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
)

Примеры

#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;
}

Связи хука

Используется в: wp_new_comment()

Остальные хуки из: wp_new_comment():

Фрагменты кода хука preprocess_comment

Фрагмент из: wp-includes/comment.php VER 4.9.1
...
	global $wpdb;

	if ( isset( $commentdata['user_ID'] ) ) {
		$commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID'];
	}

	$prefiltered_user_id = ( isset( $commentdata['user_id'] ) ) ? (int) $commentdata['user_id'] : 0;

	/**
	 * Filters a comment's data before it is sanitized and inserted into the database.
	 *
	 * @since 1.5.0
	 *
	 * @param array $commentdata Comment data.
	 */
	$commentdata = apply_filters( 'preprocess_comment', $commentdata );

	$commentdata['comment_post_ID'] = (int) $commentdata['comment_post_ID'];
	if ( isset( $commentdata['user_ID'] ) && $prefiltered_user_id !== (int) $commentdata['user_ID'] ) {
		$commentdata['user_id'] = $commentdata['user_ID'] = (int) $commentdata['user_ID'];
	} elseif ( isset( $commentdata['user_id'] ) ) {
		$commentdata['user_id'] = (int) $commentdata['user_id'];
	}

	$commentdata['comment_parent'] = isset($commentdata['comment_parent']) ? absint($commentdata['comment_parent']) : 0;
	$parent_status = ( 0 < $commentdata['comment_parent'] ) ? wp_get_comment_status($commentdata['comment_parent']) : '';
	$commentdata['comment_parent'] = ( 'approved' == $parent_status || 'unapproved' == $parent_status ) ? $commentdata['comment_parent'] : 0;

	if ( ! isset( $commentdata['comment_author_IP'] ) ) {
		$commentdata['comment_author_IP'] = $_SERVER['REMOTE_ADDR'];
	}
...
preprocess_comment Комментариев нет

    Здравствуйте, !

    Ваш комментарий
    Предпросмотр