Intereting Posts
Используйте jQuery для условного скрытия элементов в Quick Edit Эхо вне HTML «Если родительская категория« условна »? Как я могу отменить одно сообщение и сделать его отображением для другого сообщения? Принуждение WP для встраивания видео при использовании короткого кода Как я могу остановить загрузчик WP media от создания дубликатов моих загруженных изображений? WPCLI – обновлять плагины, темы и ядро, все в одной строке, а не 3 строки? Скрыть префикс до цены продукта Список всех имен боковой панели? Ежегодная страница архива на будущий год Создать ползунок в редакторе Постоянная ссылка для пользовательских пост-типов в пользовательских таксономах не найдена У вас есть не-wordpress-страница как root (и блог в другом месте) Можете ли вы запустить WordPress на сервере MarketLive / Java EE? Использование WP_Http для публикации данных в Webservice без блокировки сценария вызова

Как добавить / обновить сообщение мета на странице меню администратора?

Я хотел создать плагин для пакетной обработки пользовательских данных полей сообщений. Я знаю, что я могу добавить метатет почты, добавив мета-поле в окне редактирования сообщений и используя add_action ('save_post', 'function_to_update_meta'), чтобы вызвать мета-функции.

Но я не знаю, как вызвать функцию add_post_meta на странице меню администратора (например, пользовательское меню администратора). Как это сделать?

Заранее спасибо!

Solutions Collecting From Web of "Как добавить / обновить сообщение мета на странице меню администратора?"

Вам нужно будет использовать функцию Ajax . Для этого требуется, чтобы javascript отправлял данные формы в вашу php Ajax-функцию, которую вы можете использовать для запуска update_post_meta ();

Пример:

Форма Html:

 <form> <input id="meta" type ="text" name="2344" value="<?php echo esc_html( get_post_meta( 2344, '_your_key', true) ); ?>" /> </form> 

Javascript:

 jQuery(document).ready(function() { jQuery("form").submit(function() { var post_meta = jQuery("input name=[2344]").val(); var ID = jQuery(this).attr("name"); jQuery.ajax({ type: "POST", url: ajaxurl, data: { action: "update_meta", post_id: ID, meta: post_meta, }, success: function( data ) { //do something } }); return false; }); 

Функция PHP:

 add_action( 'wp_ajax_update_meta', 'my_function' ); function my_function() { $post_id = $_POST['post_id']; $meta = $_POST['post_meta']; update_post_meta( $post_id, '_your_key', $meta ); echo 'Meta Updated'; die(); } 

Я добавил некоторую функцию console.log для тестирования, но это в основном накладывает то же самое, что и @Chris_ ():

Функция обратного вызова меню для создания содержимого меню (PHP):

 function ajax_menu_callback() { ?> <div class="wrap"> <div id="icon-themes" class="icon32"></div> <h2>Test</h2> <br /> <form> <input id="meta" type ="text" name="1" value="<?php echo esc_html( get_post_meta( 1, 'your_key', true) ); ?>" /> <?php submit_button(); ?> </form> </div> <?php } 

Затем javascript для печати на стороне администратора (javascript, не забудьте включить библиотеку jquery):

 jQuery(document).ready(function() { $("form").submit(function() { console.log('Submit Function'); var postMeta = $('input[name="1"]').val(); console.log(postMeta); var postID = 1; var button = $('input[type="submit"]'); button.val('saving......'); $.ajax({ data: {action: "update_meta", post_id: postID, post_meta: postMeta, }, type: 'POST', url: ajaxurl, success: function( response ) { console.log('Well Done and got this from sever: ' + response); } }); // end of ajax() return false; }); // end of document.ready }); // end of form.submit 

Затем функция PHP обрабатывает update_post_meta (PHP):

 add_action( 'wp_ajax_update_meta', 'my_ajax_callback' ); function my_ajax_callback() { $post_id = $_POST['post_id']; $post_meta = $_POST['post_meta']; update_post_meta( $post_id, 'your_key', $post_meta ); echo 'Meta Updated'; die(); } // end of my_ajax_callback()