comment_form_default_fields
Дозволяє змінювати, додавати або видаляти поля форми коментування, наприклад: ім’я , 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> )
Приклади
#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;
}#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 | Введено. |
Де викликається хук
comment_form_default_fields
Де використовується хук у WordPress
Використання не знайдено.