comment_form_default_fields хук-фільтрWP 3.0.0

Дозволяє змінювати, додавати або видаляти поля форми коментування, наприклад: ім’я , email , сайт .

Такі поля відображаються лише для неавторизованих користувачів.

Читайте покрокову статтю «Як створити нові поля для коментарів WordPress» , щоб побачити, як цей фільтр працює в комплексі з іншими хуками та функціями WordPress.

Використання

add_filter( 'comment_form_default_fields', 'wp_kama_comment_form_default_fields_filter' );

/**
 * Function for `comment_form_default_fields` filter-hook.
 *
 * @param string[] $fields Array of the default comment fields.
 *
 * @return string[]
 */
function wp_kama_comment_form_default_fields_filter( $fields ){

	// Filter...
	return $fields;
}
$fields
(масив)
Масив із полями форми коментування за умовчанням.

За умовчанням змінна $fields генерується так (код із движка):

$fields = array(
		'author' => '<p class="comment-form-author">' . '<label for="author">' . __('Name'). ( $req ? ' <span class="required">*</span>' : '' ) . '</label>'.
					'<input id="author" name="author" type="text" value="' . esc_attr( $commenter['comment_author'] ) . '" size="30" maxlength="245"' . $html_req. ' /></p>',
		'email' => '<p class="comment-form-email"><label for="email">' . __('Email'). ( $req ? ' <span class="required">*</span>' : '' ) . '</label>'.
					'<input id="email" name="email" ' . ($html5? 'type="email"': 'type="text"'). ' value="' . esc_attr( $commenter['comment_author_email'] ) . '" size="30" maxlength="100" aria-describedby="email-notes"' . $html_req. ' /></p>',
		'url' => '<p class="comment-form-url"><label for="url">' . __('Website'). '</label>'.
					'<input id="url" name="url" ' . ( $html5 ? 'type="url"' : 'type="text"' ) . ' value="' . esc_attr( $commenter['comment_author_url'] ) . '" size="30" maxlength="200" /></p>',
	);

У колбек-функцію приходять вже оброблені рядки і масив має такий вигляд (RU локаль):

Array
(
	[author] => <p class="comment-form-author"><label for="author">Ім'я <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245" required='required' /></p>
	[email] => <p class="comment-form-email"><label for="email">E-mail <span class="required">*</span></label> <input id=" email" name="email" type="email" value="" size="30" maxlength="100" aria-describedby="email-notes" required='required' /></p>
	[url] => <p class="comment-form-url"><label for="url">Сайт</label> <input id="url" name="url" type="url" value=" " size="30" maxlength="200" /></p>
)

Приклади

0

#1 Як прибрати поле “Сайт” з форми коментування

add_filter( 'comment_form_default_fields', 'comment_form_default_add_my_fields' );

/**
 * Видаляє поле "Сайт" із форми коментування для незареєстрованих користувачів.
 *
 * @param array $fields Дефолтні поля
 *
 * @return array
 */
function comment_form_default_add_my_fields( $fields ) {
	unset($fields['url']);

	return $fields;
}
0

#2 Як додати своє поле “Телефон” у форму коментування

На фільтрі comment_form_default_fieldsможна вивести поле.

Щоб зберегти введені в нього дані, потрібно додатково задіяти подію comment_post .

add_filter( 'comment_form_default_fields', 'comment_form_default_add_phone_field' );

/**
 * Додає поле "Телефон" у форму коментування для незареєстрованих користувачів.
 *
 * @param array $fields Дефолтні поля
 *
 * @return array
 */
function comment_form_default_add_phone_field( $fields ) {

	$fields['phone'] = '<p class="comment-form-phone">' .
					   '<label for="phone">' . __('Phone'). '</label>' .
					   '<input id="phone" name="phone" type="text" size="30"/></p>';

	return $fields;
}

add_action( 'comment_post', 'save_extend_comment_meta_data');

/**
 * Зберігає вміст поля "Телефон" у метаполі.
 *
 * @param int $comment_id Ідентифікатор коментаря
 */
function save_extend_comment_meta_data( $comment_id ) {
	if ( ! empty( $_POST['phone'] ) ) {
		$phone = sanitize_text_field( $_POST['phone'] );
		add_comment_meta($ comment_id, 'phone', $phone);
	}
}

Тепер, щоб вивести значення поля шаблону коментаря, потрібно використовувати функцію get_comment_meta() .

список змін

З версії 3.0.0Введено.

Де викликається хук

Де використовується хук у WordPress

Використання не знайдено.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *