WordPress.org

Make WordPress Core

Ticket #8420: func.diff

File func.diff, 2.7 KB (added by kapeels, 3 years ago)
  • wp-includes/functions.php

     
    26602660        if ( function_exists( 'apply_filters' ) ) { 
    26612661                $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler'); 
    26622662        }else { 
     2663            if(defined('DOING_AJAX') && DOING_AJAX) 
     2664                $function = '_ajax_wp_die_handler';             
     2665            else 
    26632666                $function = '_default_wp_die_handler'; 
    26642667        } 
    26652668 
     
    27582761        die(); 
    27592762} 
    27602763 
     2764function _ajax_die_handler_filter() {  
     2765    return '_ajax_wp_die_handler';  
     2766} 
     2767 
    27612768/** 
     2769 * Kill WordPress execution and send AJAX response with error message. 
     2770 * 
     2771 * This is AJAX-version of the default handler for wp_die 
     2772 * 
     2773 * @since 3.0.0 
     2774 * @access private 
     2775 * 
     2776 * @param string $message Error message. 
     2777 * @param string $title Error title. 
     2778 * @param string|array $args Optional arguements to control behaviour. 
     2779 */ 
     2780function _ajax_wp_die_handler( $message, $title = '', $args = array() ) {     
     2781        $defaults = array( 'response' => 200 ); 
     2782        $r = wp_parse_args($args, $defaults);            
     2783        if ( !headers_sent() ) { 
     2784            status_header( $r['response'] ); 
     2785        } 
     2786        if ( function_exists( 'is_wp_error' ) && is_wp_error( $message ) ) { 
     2787                if ( empty( $title ) ) { 
     2788                        $error_data = $message->get_error_data(); 
     2789                        if ( is_array( $error_data ) && isset( $error_data['title'] ) ) 
     2790                                $title = $error_data['title']; 
     2791                } 
     2792                $errors = $message->get_error_messages(); 
     2793                switch ( count( $errors ) ) : 
     2794                case 0 : 
     2795                        $message = ''; 
     2796                        break; 
     2797                case 1 : 
     2798                        $message = "<p>{$errors[0]}</p>"; 
     2799                        break; 
     2800                default : 
     2801                        $message = "<ul>\n\t\t<li>" . join( "</li>\n\t\t<li>", $errors ) . "</li>\n\t</ul>"; 
     2802                        break; 
     2803                endswitch; 
     2804        } elseif ( is_string( $message ) ) { 
     2805                $message = "<p>$message</p>"; 
     2806        }         
     2807        $id = isset($_POST['post_ID'])? (int) $_POST['post_ID'] : 0; 
     2808        $resp   =   new WP_Ajax_Response( array( 
     2809                        'what' => 'wp_error', 
     2810                        'id' => $id, 
     2811                        'data' => $message 
     2812                ) );                   
     2813        $resp->send();           
     2814} 
     2815/** 
    27622816 * Retrieve the WordPress home page URL. 
    27632817 * 
    27642818 * If the constant named 'WP_HOME' exists, then it willl be used and returned by 
  • wp-admin/admin-ajax.php

     
    2121 
    2222require_once('./includes/admin.php'); 
    2323@header('Content-Type: text/html; charset=' . get_option('blog_charset')); 
     24 
     25add_filter('wp_die_handler','_ajax_die_handler_filter'); 
     26 
    2427send_nosniff_header(); 
    2528 
    2629do_action('admin_init');