Как сохранить дополнительное поле при создании комментария?

Решено

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

Добавить Комментарий
    Ответ

    Пример как добавить к форме добавления комментария вордпресс свое поле:

     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">'. __('City') . '</label>
     <span class="required">*</span>
     <input id="city" name="city" size="30" type="text" /></p>';
     return $default;
     }
     

    Пример как проверить поле в процессе сохранения и выдать ошибку в случае неудачи:

     add_filter( 'preprocess_comment', 'verify_comment_meta_data' );
     function verify_comment_meta_data( $commentdata ) {
     if ( ! isset( $_POST['city'] ) )
     wp_die( __( 'Error: please fill the required field (city).' ) );
     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' ] );
     }
     

    учитываем что нам нужно было в html указать name=»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;
     }
     

    Добавить Комментарий

    Ваш ответ

    Размещая свой ответ, вы соглашаетесь с правилами сайта.