Intereting Posts
Как защитить субдомен с помощью UCC SSL? Проверьте версию внешней библиотеки Enqueue'd Шаблон предварительного просмотра страницы / страницы Показать изображение, если опубликовано сообщение Добавляет ли WordPress свои собственные классы в навигационные меню? Автоматически уменьшать размер шрифта для длинных слов как войти в WP, если отсутствует ссылка «Войти» в Meta Как wordpress отслеживает идентификатор сообщения, когда почтовый идентификатор не используется в постоянных ссылках? Как создать запись и комментарий в форме редактирования на странице? Как использовать метатек автора в коротком коде? Загрузка нескольких файлов с помощью media_handle_upload Последние сообщения видео на главной странице Отключить панель администратора для конкретного контента. Как я могу напрямую обращаться к файлу PHP, находящемуся в папке тем? Можно ли проверить наличие коротких кодов на странице?

Неопределенный индекс: 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.

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

 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']);); }