Intereting Posts
Сколько веб-сайтов WP может идти на одной учетной записи общего хостинга? Скрыть форму комментариев полностью (желательно без использования CSS) Сортировка сообщений определенным образом Крючок действия, в котором обновляется мета-комментарий Как визуализировать типы сообщений в RSS-фиде? Проблема с кодом роли автора Как установить порядок загрузки плагина при обновлении опции active_plugins? WP API фильтрует по таксономии Разбивка страниц в таблице html не работает Как получить список терминов таксономии, которые используются только в определенных типах сообщений? Отключить обновление базы данных? сломать мой сайт Как получить имя и описание боковой панели в теме? Отключить. Посетите страницу «Обновить сеть», чтобы обновить все ваши сайты. Уведомление от Dashboard Проектирование настраиваемого типа сообщений с минимальным количеством мета-полей Передайте значение get_option в массив

Неопределенный индекс: сообщение в уведомлении при добавлении мета-окна

Я пытаюсь добавить мета-окно на определенной странице с id 62. Но я получаю уведомление Undefined index: post in в строке 5, т.е. $post_id= $_GET['post'] ? $_GET['post'] : $_POST['post_ID']; $post_id= $_GET['post'] ? $_GET['post'] : $_POST['post_ID'];

Ниже приведен код, который я использую.

 <?php add_action('admin_init','contact_meta_init1'); function contact_meta_init1(){ $post_id= $_GET['post'] ? $_GET['post'] : $_POST['post_ID']; if($post_id=='62'){ add_meta_box('contact_meta11','Social icons','social_icon','page','normal','high'); } } function social_icon() { global $post; echo '<input type="hidden" name="contactmeta_noncename" id="contactmeta_noncename" value="' . wp_create_nonce( plugin_basename(__FILE__) ) . '" />'; $contact_no = get_post_meta($post->ID, '_contact_no', true); echo '<label >';?><?php _e( 'contact_no:' );?></label> <?php echo '<br><textarea name=_contact_no rows="1" cols="90">'.$contact_no.'</textarea>'; } function contact_meta_save1($post_id, $post) { if ( !wp_verify_nonce( ($_POST['contactmeta_noncename']), plugin_basename(__FILE__) )) { return $post->ID; } if ( !current_user_can( 'edit_post', $post->ID )) return $post->ID; $contact_meta['_contact_no'] = $_POST['_contact_no']; foreach ($contact_meta as $key => $value) { if( $post->post_type == 'revision' ) return; $value = implode(',', (array)$value); // if(get_post_meta($post->ID, $key, FALSE)) { update_post_meta($post->ID, $key, $value); } else { add_post_meta($post->ID, $key, $value); } if(!$value) delete_post_meta($post->ID, $key); } } add_action('save_post', 'contact_meta_save1', 1, 2); ?> 

Я сделал некоторые повторные исследования, затем я использовал isset, как это

 $post_id= isset($_GET['post']) ? isset($_GET['post']) : isset($_POST['post_ID']); 

Это помогает избавиться от уведомлений, но затем этот метабокс добавляется ко всем страницам.

Я использовал этот код много раз, но на этот раз не то, что не так. Пожалуйста помоги.

Solutions Collecting From Web of "Неопределенный индекс: сообщение в уведомлении при добавлении мета-окна"

Вы получаете эту ошибку, потому что $_GET и $_POST не заполняются на каждой странице администратора этими данными. Кроме того, ваш код никогда не должен полагаться на глобальные переменные, они могут быть изменены любым другим кодом, поэтому они ненадежны. Поэтому не используйте global $post; , $_POST или $_GET когда вы можете получить информацию из лучших источников, например, здесь.

Используйте действие add_meta_boxes для … ну … добавьте метабокс. Если вы хотите ограничить обмен веществ только одним типом сообщения, используйте действие add_meta_boxes_$post_type .

Вот как вы регистрируете метабокс для page типа сообщения и как обращаться к объекту WP_Post в вашей функции обратного вызова:

 add_action( 'add_meta_boxes_page', function( \WP_Post $post ) { if ( 62 === (int) $post->ID ) { add_meta_box( 'contact_meta11','Social icons','social_icon','page','normal','high' ); } }); function social_icon( \WP_Post $post ) { } 

Примечание. В моем примере я пишу \WP_Post , а не только WP_Post , потому что этот класс существует в глобальном пространстве имен . Надеюсь, вы используете свое собственное пространство имен для своего кода. В этом случае вам нужно написать его, как я, потому что другой мудрый PHP попытался – и не смог – найти класс в вашем пространстве имен.