Добавить Произвольное Поле в Комментарии

28 июн. 2012 г., 09:33:41
Просмотры: 19.9K
Голосов: 1

Я просмотрел множество обсуждений касательно моей проблемы, но к сожалению, ничего не подошло, и это мой последний вариант. Я хочу добавить несколько произвольных полей в форму комментариев. Как я могу это сделать?

0
Все ответы на вопрос 2
0
10

Вот вам: Добавление пользовательских полей в формы комментариев WordPress?

И еще один отличный пост на эту тему: http://wpengineer.com/2214/adding-input-fields-to-the-comment-form/

Доступны функции для добавления/обновления, удаления метаданных комментариев, аналогично метаданным записей и пользователей.

Редактирование: Вот пример для начала (поместите код в functions.php или в собственный плагин):

Добавляем поля в форму комментария:

add_filter( 'comment_form_defaults', 'change_comment_form_defaults');
function change_comment_form_defaults( $default ) {
    $commenter = wp_get_current_commenter();
    $default[ 'fields' ][ 'email' ] .= '<p class="comment-form-author">' .
                                            '<label for="city">'. __('Город') . '</label>
                                        <span class="required">*</span>
                                        <input id="city" name="city" size="30" type="text" /></p>';
    return $default;
}

4 функции для получения/добавления/обновления/удаления метаданных комментариев:

get_comment_meta( $comment_id, $meta_key, $single = false );
add_comment_meta($comment_id, $meta_key, $meta_value, $unique = false );
update_comment_meta($comment_id, $meta_key, $meta_value, $unique = false );
delete_comment_meta( $comment_id, $meta_key, $single = false );

Здесь вы можете выполнить валидацию:

add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
function verify_comment_meta_data( $commentdata ) {
    if ( ! isset( $_POST['city'] ) )
        wp_die( __( 'Ошибка: пожалуйста, заполните обязательное поле (город).' ) );
    return $commentdata;
}

И сохранить метаданные комментария:

add_action( 'comment_post', 'save_comment_meta_data' );
function save_comment_meta_data( $comment_id ) {
    add_comment_meta( $comment_id, 'city', $_POST[ 'city' ] );
}

Получить и отобразить метаданные комментария:

add_filter( 'get_comment_author_link', 'attach_city_to_author' );
function attach_city_to_author( $author ) {
    $city = get_comment_meta( get_comment_ID(), 'city', true );
    if ( $city )
        $author .= " ($city)";
    return $author;
}

(Примечание: Весь код взят из WPengineer по ссылке выше. В том посте есть больше деталей и расширенных примеров использования, пожалуйста, ознакомьтесь и с ними!)

28 июн. 2012 г. 10:01:45
2

Эта презентация от Боу Либенса должна показать вам, как это сделать: Интеграция с комментариями

А эта статья от Отто даст вам больше информации: Советы по темам WordPress 3.0: Форма комментариев

Также доступен базовый плагин под названием "Wordpress Plugin: Extra Comment Fields" (извините, не могу разместить ссылку).

28 июн. 2012 г. 10:02:56
Комментарии

Ссылки могут быть удалены. Пожалуйста, улучшите свой ответ, добавив часть контента, который вы нашли по этим ссылкам. Лучше всего будет привести пример.

kaiser kaiser
28 июн. 2012 г. 10:31:20

спасибо за ответ, приятель, это мне тоже помогло, но я бы скорее выбрал ответ rutwick. Спасибо :)

markyeoj markyeoj
28 июн. 2012 г. 10:41:12