Ticket #36819: 36819.4.diff
File 36819.4.diff, 2.7 KB (added by , 8 years ago) |
---|
-
src/wp-includes/plugin.php
1019 1019 * 1020 1020 * @return array the staticvar from the first time it is set. 1021 1021 */ 1022 function _backup_plugin_globals() {1022 function _backup_plugin_globals() { 1023 1023 global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; 1024 1024 1025 1025 static $backup_globals = array(); … … 1031 1031 'backup_merged_filters' => $merged_filters, 1032 1032 'backup_wp_current_filter' => $wp_current_filter, 1033 1033 ); 1034 }; 1034 1035 $wp_filter = $wp_actions = array(); 1036 } 1035 1037 return $backup_globals; 1036 1038 } 1037 1039 … … 1047 1049 * @global array $wp_current_filter Stores the list of current filters with the current one last. 1048 1050 * @staticvar array $backup_globals Backed up globals. 1049 1051 */ 1050 function _restore_plugin_globals() {1052 function _restore_plugin_globals() { 1051 1053 global $wp_filter, $wp_actions, $merged_filters, $wp_current_filter; 1052 1054 1053 1055 $backup_globals = _backup_plugin_globals(); 1054 1056 1055 if ( $wp_filter !== $backup_globals['backup_wp_filter'] ){ 1056 $wp_filter = array_merge_recursive( $wp_filter, $backup_globals['backup_wp_filter'] ); 1057 if ( empty( $wp_filter ) ) { 1058 $wp_filter = $backup_globals['backup_wp_filter']; 1059 } else { 1060 $added_filters = $wp_filter; 1061 $wp_filter = $backup_globals['backup_wp_filter']; 1062 1063 foreach ( $added_filters as $tag => $callback_groups ) { 1064 // Loop through callback groups. 1065 foreach ( $callback_groups as $priority => $callbacks ) { 1066 1067 // Loop through callbacks. 1068 foreach ( $callbacks as $cb ) { 1069 add_filter( $tag, $cb['function'], $priority, $cb['accepted_args'] ); 1070 } 1071 } 1072 } 1057 1073 } 1058 1074 1059 if ( $wp_actions !== $backup_globals['backup_wp_actions'] ){ 1060 $wp_actions = array_merge_recursive( $wp_actions, $backup_globals['backup_wp_actions'] ); 1075 if ( empty ( $wp_actions ) ) { 1076 $wp_actions = $backup_globals['backup_wp_actions']; 1077 } else { 1078 $run_actions = $wp_actions; 1079 $wp_actions = $backup_globals['backup_wp_actions']; 1080 1081 foreach( $run_actions as $action => $count ) { 1082 if ( ! isset( $wp_actions[ $action ] ) ) { 1083 $wp_actions[ $action ] = 0; 1084 } 1085 1086 $wp_actions[ $action ] += $count; 1087 } 1061 1088 } 1062 1089 1063 if ( $merged_filters !== $backup_globals['backup_merged_filters'] ) {1090 if ( $merged_filters !== $backup_globals['backup_merged_filters'] ) { 1064 1091 $merged_filters = array_merge_recursive( $merged_filters, $backup_globals['backup_merged_filters'] ); 1065 1092 } 1066 1093 1067 if ( $wp_current_filter !== $backup_globals['backup_wp_current_filter'] ) {1094 if ( $wp_current_filter !== $backup_globals['backup_wp_current_filter'] ) { 1068 1095 $wp_current_filter = array_merge_recursive( $wp_current_filter, $backup_globals['backup_wp_current_filter'] ); 1069 1096 } 1070 1097 }