WordPress.org

Make WordPress Core

Ticket #46025: 46025.2.diff

File 46025.2.diff, 3.2 KB (added by spacedmonkey, 3 years ago)
  • src/wp-includes/functions.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    29842984                 * @param callable $function Callback function name.
    29852985                 */
    29862986                $function = apply_filters( 'wp_die_json_handler', '_json_wp_die_handler' );
     2987        } elseif ( wp_is_jsonp_request() ) {
     2988                /**
     2989                 * Filters the callback for killing WordPress execution for JSONP requests.
     2990                 *
     2991                 * @since 5.1.0
     2992                 *
     2993                 * @param callable $function Callback function name.
     2994                 */
     2995                $function = apply_filters( 'wp_die_jsonp_handler', '_jsonp_wp_die_handler' );
    29872996        } elseif ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
    29882997                /**
    29892998                 * Filters the callback for killing WordPress execution for XML-RPC requests.
     
    32573266        echo wp_json_encode( $data );
    32583267        die();
    32593268}
     3269
     3270/**
     3271 * Kill WordPress execution and display JSONP message with error message.
     3272 *
     3273 * This is the handler for wp_die when processing JSONP requests.
     3274 *
     3275 * @since 5.1.0
     3276 * @access private
     3277 *
     3278 * @param string       $message Error message.
     3279 * @param string       $title   Optional. Error title. Default empty.
     3280 * @param string|array $args    Optional. Arguments to control behavior. Default empty array.
     3281 */
     3282function _jsonp_wp_die_handler( $message, $title = '', $args = array() ) {
     3283        list( $message, $title, $r ) = _wp_die_process_input( $message, $title, $args );
     3284
     3285        $data = array(
     3286                'code'              => $r['code'],
     3287                'message'           => $message,
     3288                'data'              => array(
     3289                        'status' => $r['response'],
     3290                ),
     3291                'additional_errors' => $r['additional_errors'],
     3292        );
     3293
     3294        if ( ! headers_sent() ) {
     3295                header( 'Content-Type: application/javascript; charset=utf-8' );
     3296                if ( null !== $r['response'] ) {
     3297                        status_header( $r['response'] );
     3298                }
     3299                nocache_headers();
     3300        }
     3301
     3302        $result         = wp_json_encode( $data );
     3303        $jsonp_callback = $_GET['_jsonp'];
     3304        echo '/**/' . $jsonp_callback . '(' . $result . ')';
     3305        die();
     3306}
    32603307
    32613308/**
    32623309 * Kill WordPress execution and display XML message with error message.
  • src/wp-includes/load.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    14881488        return false;
    14891489
    14901490}
     1491
     1492
     1493/**
     1494 * Checks whether current request is a JSONP request, or is expecting a JSONP response.
     1495 *
     1496 * @since 5.1.0
     1497 *
     1498 * @return bool True if JSONP Request
     1499 */
     1500function wp_is_jsonp_request() {
     1501        if ( ! isset( $_GET['_jsonp'] ) ) {
     1502                return false;
     1503        }
     1504
     1505        if ( ! function_exists( 'wp_check_jsonp_callback' ) ) {
     1506                require_once ABSPATH . WPINC . '/functions.php';
     1507        }
     1508
     1509        $jsonp_callback = $_GET['_jsonp'];
     1510        if ( ! wp_check_jsonp_callback( $jsonp_callback ) ) {
     1511                return false;
     1512        }
     1513
     1514        $jsonp_enabled = true;
     1515        /** This filter is documented in wp-includes/rest-api/class-wp-rest-server.php */
     1516        $jsonp_enabled = apply_filters( 'rest_jsonp_enabled', $jsonp_enabled );
     1517
     1518        return $jsonp_enabled;
     1519
     1520}
     1521 No newline at end of file