Intereting Posts
При кодировании темы WordPress, где заканчивается тема (т.е. презентация) и плагин (т.е. функциональность)? Добавление настраиваемого класса в приложение в режиме сетки медиа-библиотеки Показывать подстраницы категории в пользовательском меню Самый дешевый способ получить префикс таблицы в многоузловой установке Как создать пользовательскую таксономию как теги? Постепенно добавьте или вычтите из поля usermeta ound this in Где редактировать поля пользовательского контента по выбору, если нет подключаемого модуля? как показывать сообщения, в которых отсутствует meta_value Wesbite супер медленный на iphone / очень быстро на рабочем столе с тем же соединением на Wi-Fi Как выполнять поиск пользователей по всему миру на основе многоуровневой установки? Добавление строк в подборщик медиа Создайте отдельные текстовые поля для отдельных пользовательских полей WordPress Короткие ссылки в WordPress не работают должным образом Почему не работает этот короткий код для youtube? Пользовательский тип сообщения WP 4.4 не может добавлять новые

Как получить и отредактировать настраиваемые поля, если в Quick Edit

У меня есть некоторые пользовательские поля, которые я хотел бы, чтобы пользователь мог редактировать в Quick Edit, я могу управлять столбцами, но я не могу их редактировать, если Quick Edit щелкнул текущий код с настраиваемыми полями, которые я бы хотел иметь возможность редактировать:

/* custom columns */ add_filter("manage_edit-programmes_columns", "edit_columns" ); add_action("manage_posts_custom_column", "custom_columns"); function edit_columns($columns) { $columns = array( "cb" => "<input type ='checkbox' />", "title" => "Schedule id", "programme" => "Programme", "channel" => "Channel", "onair" => "On Air", "catchup" => "Catchup", "popularity" => "Popularity", "onair" => "On Air", "date" => "Date" ); return $columns; } function custom_columns( $column ) { global $post; switch ( $column ) { case "programme": echo get_post_meta($post->ID, 'Programme Name', true); break; case "channel": echo get_the_term_list($post->ID, 'channelnames', '', ', ', ''); break; case "onair": echo get_post_meta($post->ID, 'Date Time Start', true); break; case "catchup": echo get_post_meta($post->ID, 'linktovideocatchup', true); break; case "popularity": echo get_post_meta($post->ID, 'popularityfig', true); break; } } 

Помощь очень ценится.

Пара вещей,

  1. Убедитесь, что в save_post вы проверяете DOING_AJAX который используется для сохранения в быстром редактировании.
  2. Проверьте мой другой вопрос: настройка быстрого редактирования экрана . Ответ, который я получил, работал, но я еще не реализовал его в своем плагине, пока он еще не является моим приоритетом.

Надеюсь, что это поможет тебе. 😉

Для сохранения данных из Quick Edit и Bulk Edit необходимы помощники JavaScript.

Следующий код выводится из производственной системы, используя тип пользовательского типа video прежде чем я напишу плагин WordPress для массового редактирования Custom Bulk / Quick Edit .

Файл quick_edit.js

 // @ref http://rachelcarden.com/2012/03/manage-wordpress-posts-using-bulk-edit-and-quick-edit/ (function($) { // we create a copy of the WP inline edit post function var $wp_inline_edit = inlineEditPost.edit; // and then we overwrite the function with our own code inlineEditPost.edit = function( id ) { // "call" the original WP edit function // we don't want to leave WordPress hanging $wp_inline_edit.apply( this, arguments ); // now we take care of our business // get the post ID var $post_id = 0; if ( typeof( id ) == 'object' ) $post_id = parseInt( this.getId( id ) ); if ( $post_id > 0 ) { // define the edit row var $edit_row = $( '#edit-' + $post_id ); var $post_row = $( '#post-' + $post_id ); // get the data var $additional_copies = $( '.column-additional_copies', $post_row ).html(); var $main_credits = $( '.column-main_credits', $post_row ).html(); // populate the data $( ':input[name="additional_copies"]', $edit_row ).val( $additional_copies ); $( ':input[name="main_credits"]', $edit_row ).val( $main_credits ); } }; $( '#bulk_edit' ).live( 'click', function() { // define the bulk edit row var $bulk_row = $( '#bulk-edit' ); // get the selected post ids that are being edited var $post_ids = new Array(); $bulk_row.find( '#bulk-titles' ).children().each( function() { $post_ids.push( $( this ).attr( 'id' ).replace( /^(ttle)/i, '' ) ); }); // get the data var $additional_copies = $bulk_row.find( 'textarea[name="additional_copies"]' ).val(); var $main_credits = $bulk_row.find( 'textarea[name="main_credits"]' ).val(); // save the data $.ajax({ url: ajaxurl, // this is a variable that WordPress has already defined for us type: 'POST', async: false, cache: false, data: { action: 'save_bulk_edit_video', // this is the name of our WP AJAX function that we'll set up next post_ids: $post_ids, // and these are the 2 parameters we're passing to our function additional_copies: $additional_copies, main_credits: $main_credits } }); }); })(jQuery); 

Файл video-quick-edit.php

 <?php /** * Quick Edit and Bulk Edit helper for Media Burn video records * * @author Michael Cannon <mc@aihr.us> * @ref http://rachelcarden.com/2012/03/manage-wordpress-posts-using-bulk-edit-and-quick-edit/ */ add_action( 'bulk_edit_custom_box', 'quick_edit_custom_box_video', 10, 2 ); add_action( 'quick_edit_custom_box', 'quick_edit_custom_box_video', 10, 2 ); function quick_edit_custom_box_video( $column_name, $post_type ) { $slug = 'video'; if ( $slug !== $post_type ) return; if ( ! in_array( $column_name, array( 'additional_copies', 'main_credits' ) ) ) return; static $printNonce = true; if ( $printNonce ) { $printNonce = false; wp_nonce_field( plugin_basename( __FILE__ ), 'video_edit_nonce' ); } ?> <fieldset class="inline-edit-col-right inline-edit-video"> <div class="inline-edit-col inline-edit-<?php echo $column_name ?>"> <label class="inline-edit-group"> <?php switch ( $column_name ) { case 'additional_copies': ?> <span class="title">Additional Copies</span> <textarea cols="22" rows="1" name="additional_copies" autocomplete="off"></textarea> <?php break; case 'main_credits': ?> <span class="title">Main Credits</span> <textarea cols="22" rows="1" name="main_credits" autocomplete="off"></textarea> <?php break; } ?> </label> </div> </fieldset> <?php } add_action( 'save_post', 'save_video_meta' ); function save_video_meta( $post_id ) { // TODO make $slug static $slug = 'video'; if ( $slug !== $_POST['post_type'] ) return; if ( !current_user_can( 'edit_post', $post_id ) ) return; if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( isset( $post->post_type ) && 'revision' == $post->post_type ) return; $_POST += array( "{$slug}_edit_nonce" => '' ); if ( !wp_verify_nonce( $_POST["{$slug}_edit_nonce"], plugin_basename( __FILE__ ) ) ) return; if ( isset( $_REQUEST['additional_copies'] ) ) update_post_meta( $post_id, 'additional_copies', wp_kses_post( $_REQUEST['additional_copies'] ) ); if ( isset( $_REQUEST['main_credits'] ) ) update_post_meta( $post_id, 'main_credits', wp_kses_post( $_REQUEST['main_credits'] ) ); } add_action( 'admin_print_scripts-edit.php', 'admin_edit_video_foot' ); function admin_edit_video_foot() { $slug = 'video'; // load only when editing a video if ( ( isset( $_GET['page'] ) && $slug == $_GET['page'] ) || ( isset( $_GET['post_type'] ) && $slug == $_GET['post_type'] ) ) { wp_enqueue_script( 'admin-quick-edit-video', get_template_directory_uri() . '/functions/user/custom/fitv/quick_edit.js', array( 'jquery', 'inline-edit-post' ), '', true ); } } add_action( 'wp_ajax_save_bulk_edit_video', 'save_bulk_edit_video' ); function save_bulk_edit_video() { $post_ids = ( ! empty( $_POST[ 'post_ids' ] ) ) ? $_POST[ 'post_ids' ] : array(); $additional_copies = ( ! empty( $_POST[ 'additional_copies' ] ) ) ? wp_kses_post( $_POST[ 'additional_copies' ] ) : null; $main_credits = ( ! empty( $_POST[ 'main_credits' ] ) ) ? wp_kses_post( $_POST[ 'main_credits' ] ) : null; if ( ! empty( $post_ids ) && is_array( $post_ids ) ) { foreach ( $post_ids as $post_id ) { update_post_meta( $post_id, 'additional_copies', $additional_copies ); update_post_meta( $post_id, 'main_credits', $main_credits ); } } die(); } ?>