Использование фильтра для добавления дополнительных полей в comment_form ()

Я хочу добавить поле в комментарии и использовать эти коды.

functions.php

function my_fields($fields) { $fields['url2'] = '<p class="comment-form-url2"> <label for="url2">URL hittad på webben</label> <input id="url2" name="url2" type="text" value="" size="30" /> </p>'; return $fields; } add_filter('comment_form_default_fields','my_fields'); 

comments.php

 comment_form(); 

Вопросов

  1. Он не добавляет лишнего поля в комментарий администратора. Должно это или нет?
  2. Кажется, что это не спасло лишнее поле. Я попробовал var dump массив комментариев. Почему нет?

Есть пара других крючков в форме комментария, которую вы можете использовать. Если вы подключаетесь только к дисплеям, если пользователь не вошел в систему. Если вы хотите это поле для всех пользователей (вход в систему или нет), вам нужно добавить свою форму, подключив их как к comment_form_after_fields и к comment_form_logged_in_after , обе из которых действия и вывести новое поле.

 <?php add_action( 'comment_form_logged_in_after', 'pmg_comment_tut_fields' ); add_action( 'comment_form_after_fields', 'pmg_comment_tut_fields' ); function pmg_comment_tut_fields() { ?> <p class="comment-form-title"> <label for="pmg_comment_title"><?php _e( 'Title' ); ?></label> <input type="text" name="pmg_comment_title" id="pmg_comment_title" /> </p> <?php } 

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

Чтобы сохранить дополнительное поле, вам нужно сделать следующее:

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

См. Этот хороший учебник, охватывающий дополнительные поля в формах комментариев.

Взгляните на этот плагин http://www.solaceten.info

(раскрытие: я соавтор. Плагин бесплатный, но не поддерживается)