Этот код в плагине, в файле который добавляет ссылку в админ панели
Ошибка появляется при сохранении поста
Делал по
этой инструкции
//добавление доп поля на страницу редактирования записей и страниц
add_action('add_meta_boxes', 'my_extra_fields', 1);
function my_extra_fields() {
/*
* id блока в который будет обернута группа полей,
* заголовок группы полей,
* Функция, которая выводит на экран HTML содержание блока,
* Название экрана для которого добавляется блок get_current_screen(),
* Место где должен показываться блок: normal, advanced или side,
* Приоритет блока для показа выше или ниже остальных блоков,
* Аргументы, которые передаются в фунцию вывода HTML
*/
add_meta_box( 'repeat_extra_fields', 'Повторяющеся поля', 'repeater_extra_fields_html', ['post', 'page'], 'normal', 'high' );
}
function repeater_extra_fields_html( $post ){
//print_r($post);
//add_action( 'save_'.$post->post_type, 'update_repeater_extra_fields', 0 );
//Доп поле для отзывов
$reviews_post_id = [79, 21, 16];
if(in_array($post->ID, $reviews_post_id)){
?><div class="repeating-field">
<h4 class="repeating-field_title">Отзывы</h4>
<div class="repeating-field_list">
<div class="item">
<input type="text" name="repeat_extra_field[test][]">
<div class="delete-item">-</div>
</div>
</div>
<div class="add-item" data-wpeditor data-index="0">+</div>
</div>
<input type="hidden" name="extra_fields_nonce" value="<?= wp_create_nonce(__FILE__); ?>" /><?php
}
}
// включаем обновление полей при сохранении
//add_action( 'save_post', 'update_repeater_extra_fields', 0 );
add_action( 'save_page', 'update_repeater_extra_fields', 0 );
// Сохраняем доп поля, при сохранении поста
function update_repeater_extra_fields( $post_id ){
// базовая проверка
if (
empty( $_POST['repeat_extra_field'] )
|| ! wp_verify_nonce( $_POST['extra_fields_nonce'], __FILE__ )
|| wp_is_post_autosave( $post_id )
|| wp_is_post_revision( $post_id )
) {
return false;
}
$_POST['repeat_extra_field'] = array_map( 'sanitize_text_field', $_POST['repeat_extra_field'] ); // чистим все данные от пробелов по краям
foreach( $_POST['repeat_extra_field'] as $key => $value ) {
update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически
}
return $post_id;
}