Intereting Posts
Удаление полей с страницы профиля темы My Login Plugin Расположение меню по идентификатору меню или идентификатору меню в start_el () Walker Admin view: фильтровать сообщения, привязанные к конкретной таксономии Как использовать Plupload в темах Пользовательский заказ на главную страницу Добавить класс ко всем родительским элементам внутри the_content Создание пользовательского типа, как пользовательский пост Безопасно ли передавать права администратора? Как добавить термины (без удаления других) Перепишите базовый url для одиночных сообщений Обновление триггера для нового медиа-менеджера в 3.5 Архив пользовательских сообщений типа по дате с пользовательской постоянной ссылкой Как выровнять по центру меню в 20-ти десятимесячной теме WordPress? WP admin bar только на некоторых страницах Создайте уникальный буквенно-цифровой идентификатор на wp_insert_post

Неопределенный индекс: at_nonce в пользовательском почтовом обмене

Я получаю эту ошибку с моим обычным почтовым обменом. Пользовательские сообщения и обмены отлично работают, но если у меня есть отладка и когда я пытаюсь сохранить любую другую страницу или сообщение, я получу ошибку:

Примечание. Неопределенный индекс: at_nonce в /Users/jay/site/wp-content/themes/mytheme/dogs-post-type.php в строке 53

Примечание. Неопределенный индекс: at_nonce в /Users/jay/site/wp-content/themes/mytheme/dogs-post-type.php в строке 53

Предупреждение: невозможно изменить информацию заголовка – заголовки, уже отправленные (вывод запущен в /Users/jay/site/wp-content/themes/mytheme/dogs-post-type.php:53) в / Users / jay / site / wp- включает / pluggable.php в строке 876

Мой код:

<?php // Add new custom post for dogs function example_dogs_custom_init() { $args = array( 'label' => 'Dogs', 'public' => true, 'capability_type' => 'post', 'hierarchical' => true, 'has_archive' => true, 'menu_position' => 5, 'supports' => array('title', 'editor'), 'rewrite' => array('slug' => 'pets/dogs', 'with_front' => false) ); register_post_type( 'dogs', $args ); } add_action( 'init', 'example_dogs_custom_init' ); // METABOX breed add_action("add_meta_boxes", 'test_add_post_meta_boxes_breed'); function test_add_post_meta_boxes_breed() { add_meta_box( 'breed-meta', // Unique ID 'Breed', // Title 'breed_cb', // Callback function 'dogs', // Admin page (or post type) 'side', // Context 'default' // Priority ); } function breed_cb() { global $post; $breed_input = get_post_meta($post->ID, 'breed_field', true); // unique identifier, name of hidden field wp_nonce_field(__FILE__, 'at_nonce'); ?> <label for="breed_field">Breed:</label> <input type="text" name="breed_field" id="breed_field" value="<?php echo $breed_input; ?>" /> <br><span></span><?php } add_action('save_post', function() { global $post; if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; // security check - nonce // verify this came from the our screen and with proper authorizarion, // because save_post can be triggered at other times if ( $_POST && !wp_verify_nonce($_POST['at_nonce'], __FILE__) ) { return; } if ( isset($_POST['breed_field']) ) { update_post_meta($post->ID, 'breed_field', $_POST['breed_field']); } }); ?> 

Что-то не так с полем nonce, но я не могу понять, что. Если это помогает, структура кода зависит от курса Jeffrey Ways The Magic of WordPress Custom Post Types.

Solutions Collecting From Web of "Неопределенный индекс: at_nonce в пользовательском почтовом обмене"

Это ваши проблемы:

 if ( $_POST && !wp_verify_nonce($_POST['at_nonce'], __FILE__) ) { return; } 

Вы проверяете, установлено ли значение $_POST , но вы не проверяете $_POST['at_nonce'] . Если $_POST установлен, но этот ключ отсутствует, вы получите Notice . Это простое решение:

 if ( isset($_POST['at_nonce']) && !wp_verify_nonce($_POST['at_nonce'], __FILE__) ) { return; } 

Когда это Notice печатается, содержимое отправляется в браузер. Поскольку это содержимое отправляется перед отправкой соответствующих заголовков, когда отправляются соответствующие заголовки, вы получаете предупреждение «Невозможно изменить информацию заголовка».

at_nonce не существует при сохранении любого другого типа сообщения – следовательно, уведомление. Вы должны только проверить nonce, если у вас уже есть правильный тип сообщения. Попробуйте заменить это

 if ( $_POST && !wp_verify_nonce($_POST['at_nonce'], __FILE__) ) { return; } if ( isset($_POST['breed_field']) ) { update_post_meta($post->ID, 'breed_field', $_POST['breed_field']); } 

с этим (непроверенным)

  if ( isset( $_POST['dogs'] ) && wp_verify_nonce( $_POST['at_nonce'], __FILE__ ) ) { update_post_meta($post->ID, 'breed_field', $_POST['breed_field']);); }