From ff3ae0e747b5476037f5576df8d38a16d3453598 Mon Sep 17 00:00:00 2001 From: Scott Taylor Date: Tue, 15 Sep 2015 15:59:42 +0000 Subject: [PATCH] Don't redirect to the Term list table after submitting the form on the Edit Term page. Props chiragswadia, UmeshSingla, rhyswynne, afercia. Fixes #17455. Built from https://develop.svn.wordpress.org/trunk@34202 git-svn-id: http://core.svn.wordpress.org/trunk@34166 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/edit-tag-form.php | 24 +++++++ wp-admin/edit-tags.php | 69 ++++--------------- .../includes/class-wp-terms-list-table.php | 21 ++++-- wp-admin/includes/edit-tag-messages.php | 58 ++++++++++++++++ wp-includes/version.php | 2 +- 5 files changed, 112 insertions(+), 62 deletions(-) create mode 100644 wp-admin/includes/edit-tag-messages.php diff --git a/wp-admin/edit-tag-form.php b/wp-admin/edit-tag-form.php index ac5aafbf8f..5c661e0b44 100644 --- a/wp-admin/edit-tag-form.php +++ b/wp-admin/edit-tag-form.php @@ -48,6 +48,17 @@ if ( 'category' == $taxonomy ) { */ do_action( 'edit_tag_form_pre', $tag ); } + +/** + * Use with caution, see http://codex.wordpress.org/Function_Reference/wp_reset_vars + */ +wp_reset_vars( array( 'wp_http_referer' ) ); + +$wp_http_referer = remove_query_arg( array( 'action', 'message', 'tag_ID' ), $wp_http_referer ); + +/** Also used by Edit Tags */ +require_once( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' ); + /** * Fires before the Edit Term form for all taxonomies. * @@ -63,7 +74,20 @@ do_action( "{$taxonomy}_pre_edit_form", $tag, $taxonomy ); ?>

labels->edit_item; ?>

+ + + + +
+
20, 'option' => 'edit_' . $tax->name . '_per_page' ) ); $location = false; +$referer = wp_get_referer(); switch ( $wp_list_table->current_action() ) { @@ -71,9 +72,8 @@ case 'add-tag': if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; - if ( $referer = wp_get_original_referer() ) { - if ( false !== strpos( $referer, 'edit-tags.php' ) ) - $location = $referer; + if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) { + $location = $referer; } if ( $ret && !is_wp_error( $ret ) ) @@ -87,9 +87,9 @@ case 'delete': $location = 'edit-tags.php?taxonomy=' . $taxonomy; if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; - if ( $referer = wp_get_referer() ) { - if ( false !== strpos( $referer, 'edit-tags.php' ) ) - $location = $referer; + + if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) { + $location = $referer; } if ( ! isset( $_REQUEST['tag_ID'] ) ) { @@ -132,9 +132,8 @@ case 'bulk-delete': $location = 'edit-tags.php?taxonomy=' . $taxonomy; if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; - if ( $referer = wp_get_referer() ) { - if ( false !== strpos( $referer, 'edit-tags.php' ) ) - $location = $referer; + if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) { + $location = $referer; } $location = add_query_arg( 'message', 6, $location ); @@ -177,9 +176,8 @@ case 'editedtag': if ( 'post' != $post_type ) $location .= '&post_type=' . $post_type; - if ( $referer = wp_get_original_referer() ) { - if ( false !== strpos( $referer, 'edit-tags.php' ) ) - $location = $referer; + if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) { + $location = $referer; } if ( $ret && !is_wp_error( $ret ) ) @@ -285,51 +283,8 @@ if ( ! current_user_can( $tax->cap->edit_terms ) ) { ); } -$messages = array(); -$messages['_item'] = array( - 0 => '', // Unused. Messages start at index 1. - 1 => __( 'Item added.' ), - 2 => __( 'Item deleted.' ), - 3 => __( 'Item updated.' ), - 4 => __( 'Item not added.' ), - 5 => __( 'Item not updated.' ), - 6 => __( 'Items deleted.' ) -); -$messages['category'] = array( - 0 => '', // Unused. Messages start at index 1. - 1 => __( 'Category added.' ), - 2 => __( 'Category deleted.' ), - 3 => __( 'Category updated.' ), - 4 => __( 'Category not added.' ), - 5 => __( 'Category not updated.' ), - 6 => __( 'Categories deleted.' ) -); -$messages['post_tag'] = array( - 0 => '', // Unused. Messages start at index 1. - 1 => __( 'Tag added.' ), - 2 => __( 'Tag deleted.' ), - 3 => __( 'Tag updated.' ), - 4 => __( 'Tag not added.' ), - 5 => __( 'Tag not updated.' ), - 6 => __( 'Tags deleted.' ) -); - -/** - * Filter the messages displayed when a tag is updated. - * - * @since 3.7.0 - * - * @param array $messages The messages to be displayed. - */ -$messages = apply_filters( 'term_updated_messages', $messages ); - -$message = false; -if ( isset( $_REQUEST['message'] ) && ( $msg = (int) $_REQUEST['message'] ) ) { - if ( isset( $messages[ $taxonomy ][ $msg ] ) ) - $message = $messages[ $taxonomy ][ $msg ]; - elseif ( ! isset( $messages[ $taxonomy ] ) && isset( $messages['_item'][ $msg ] ) ) - $message = $messages['_item'][ $msg ]; -} +/** Also used by the Edit Tag form */ +require_once( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' ); $class = ( isset( $_REQUEST['error'] ) ) ? 'error' : 'updated'; diff --git a/wp-admin/includes/class-wp-terms-list-table.php b/wp-admin/includes/class-wp-terms-list-table.php index c83f8d4eeb..644db74647 100644 --- a/wp-admin/includes/class-wp-terms-list-table.php +++ b/wp-admin/includes/class-wp-terms-list-table.php @@ -359,9 +359,16 @@ class WP_Terms_List_Table extends WP_List_Table { $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag ); $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' ); - $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) ); - $out = '' . $name . '
'; + $uri = ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ? wp_get_referer() : $_SERVER['REQUEST_URI']; + + $edit_link = add_query_arg( + 'wp_http_referer', + urlencode( wp_unslash( $uri ) ), + get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) + ); + + $out = '' . $name . '
'; $out .= '