Почему не работает пример из темы о собственных полях в комментариях ?
Пробую реализовать вывод произвольных полей как описано в этом посте.
У меня есть дочерняя тема. В ней я создаю файл single-companies.php
В котором подключаю приведенный пример.
<?php get_template_part('template-parts/test'); ?>
test.php
<?php
// Добавляем поля для всех пользователей
add_action( 'comment_form_logged_in_after', 'extend_comment_custom_fields' );
add_action( 'comment_form_after_fields', 'extend_comment_custom_fields' );
function extend_comment_custom_fields() {
echo '<p class="comment-form-title">'.
'<label for="title">' . __( 'Comment Title' ) . '</label>'.
'<input id="title" name="title" type="text" size="30"/></p>';
echo '<p class="comment-form-rating">'.
'<label for="rating">'. __('Rating') . '<span class="required">*</span></label>
<span class="commentratingbox">';
for( $i=1; $i <= 5; $i++ ){
echo '
<label class="commentrating" style="display:inline-block;">
<input type="radio" name="rating" id="rating" value="'. $i .'"/> '. $i .'
</label>';
}
echo'</span></p>';
}
// Проверяем, заполнено ли поле "Рейтинг"
add_filter( 'preprocess_comment', 'verify_extend_comment_meta_data' );
function verify_extend_comment_meta_data( $commentdata ) {
// ничего не делаем если это ответ на комментарий
if ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] === 'replyto-comment' ) {
return $commentdata;
}
if ( empty( $_POST['rating'] ) || ! (int)$_POST['rating'] ) {
wp_die( __( 'Error: You did not add a rating. Hit the Back button on your Web browser and resubmit your comment with a rating.' ) );
}
return $commentdata;
}
add_action( 'comment_post', 'save_extend_comment_meta_data' );
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 );
}
if( !empty( $_POST['title'] ) ){
$title = sanitize_text_field($_POST['title']);
add_comment_meta( $comment_id, 'title', $title );
}
if( !empty( $_POST['rating'] ) ){
$rating = intval($_POST['rating']);
add_comment_meta( $comment_id, 'rating', $rating );
}
}
Оно замечательно отображает, делает проверку, но в базу данных commentmeta ничего не пишет (Тоесть только базовый комментарий сохраняет). В чём может быть проблема, подскажите, пожалуйста ?
Какая у вас тема?
Тема у меня самопальная. Нашел причину - add_action( 'comment_post', 'save_extend_comment_meta_data' ); Необходимо вызывать только из functions.php Поскольку я всё держал в шаблоне темлейта оно не срабатывало.
Ааа, ну это логично 
Может ли это быть связано с тем что поменялся вывод, comment_post ? do_action( 'comment_post', $comment_id, $commentdata['comment_approved'], $commentdata ); Добавил в дефолтную тему... Таже проблема кастомные поля к комментарию не добавляет.