Wie lade ich das Dashboard neu, nachdem ich in der Schnellbearbeitung auf Aktualisieren geklickt habe?

Wie kann ich die Seite wp-admin/edit.php nachdem ein Benutzer im Schnellbearbeitungsformular auf Aktualisieren wp-admin/edit.php ?

Solutions Collecting From Web of "Wie lade ich das Dashboard neu, nachdem ich in der Schnellbearbeitung auf Aktualisieren geklickt habe?"

Wir müssen den Ajax-Endpunkt dieser Aktion abfangen. Die Datei wp-admin/admin-ajax.php enthält alle möglichen Hooks im $core_actions_post Array.

Die function wpse_65157_ajax_inline_save() ist eine Kopie des Core, mit einem “force reload” wpse_65157_ajax_inline_save() am Ende. Es muss mit Javascript sein, da wp_redirect() nicht funktioniert.

 add_action( 'wp_ajax_inline-save', 'wpse_65157_ajax_inline_save' , 0 ); /** Copy of the function wp_ajax_inline_save() http://core.trac.wordpress.org/browser/tags/3.4.2/wp-admin/includes/ajax-actions.php#L1315 Only Modification marked at the end of the function with INTERCEPT */ function wpse_65157_ajax_inline_save() { global $wp_list_table; check_ajax_referer( 'inlineeditnonce', '_inline_edit' ); if ( ! isset($_POST['post_ID']) || ! ( $post_ID = (int) $_POST['post_ID'] ) ) wp_die(); if ( 'page' == $_POST['post_type'] ) { if ( ! current_user_can( 'edit_page', $post_ID ) ) wp_die( __( 'You are not allowed to edit this page.' ) ); } else { if ( ! current_user_can( 'edit_post', $post_ID ) ) wp_die( __( 'You are not allowed to edit this post.' ) ); } set_current_screen( $_POST['screen'] ); if ( $last = wp_check_post_lock( $post_ID ) ) { $last_user = get_userdata( $last ); $last_user_name = $last_user ? $last_user->display_name : __( 'Someone' ); printf( $_POST['post_type'] == 'page' ? __( 'Saving is disabled: %s is currently editing this page.' ) : __( 'Saving is disabled: %s is currently editing this post.' ), esc_html( $last_user_name ) ); wp_die(); } $data = &$_POST; $post = get_post( $post_ID, ARRAY_A ); $post = add_magic_quotes($post); //since it is from db $data['content'] = $post['post_content']; $data['excerpt'] = $post['post_excerpt']; // rename $data['user_ID'] = $GLOBALS['user_ID']; if ( isset($data['post_parent']) ) $data['parent_id'] = $data['post_parent']; // status if ( isset($data['keep_private']) && 'private' == $data['keep_private'] ) $data['post_status'] = 'private'; else $data['post_status'] = $data['_status']; if ( empty($data['comment_status']) ) $data['comment_status'] = 'closed'; if ( empty($data['ping_status']) ) $data['ping_status'] = 'closed'; // update the post edit_post(); $wp_list_table = _get_list_table('WP_Posts_List_Table'); $mode = $_POST['post_view']; $wp_list_table->display_rows( array( get_post( $_POST['post_ID'] ) ) ); // INTERCEPT: Check if it is our post_type, if not, do nothing if( 'post' == $_POST['post_type'] ) { ?>  < ?php } // end INTERCEPT wp_die(); } 

Referenz Fragen und Antworten: Wie können Kommentare für offene und geplante Beiträge aktiviert werden?

Ich habe WordPress ‘ wp-admin/js/inline-edit-post-dev.js und festgestellt, dass es keine Haken für die Ausführung von JS-Code nach dem Quick-Edit-Update gibt.

Ich entschied mich dafür, die function inlineEditPost.save von wp-admin/js/inline-edit-post-dev.js zu wp-admin/js/inline-edit-post-dev.js , ähnlich wie WordPress empfiehlt, Formulardaten zu aktualisieren, wenn das Schnellbearbeitungsformular angezeigt wird (wodurch inlineEditPost.edit überschrieben inlineEditPost.edit ).

Die vollständige function kann in wp-admin/js/inline-edit-post-dev.js . Ich habe gerade die Callback-function im Post-Aufruf geändert, um die Seite neu zu laden, anstatt das Schnellbearbeitungsformular auszublenden.

 (function($) { inlineEditPost.save = function(id) { //... // make ajax request $.post( ajaxurl, params, function(r) { location.reload(); } , 'html'); //... } })(jQuery);