WordPress.org

Make WordPress Core

Ticket #45933: 45933.5.diff

File 45933.5.diff, 2.2 KB (added by spacedmonkey, 5 months ago)

This patch returns support for jsonp

  • src/wp-includes/functions.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    32473247                'status'  => $r['response'],
    32483248        );
    32493249
     3250        if ( isset( $_GET['_jsonp'] ) ) {
     3251                $jsonp_callback = $_GET['_jsonp'];
     3252                $content_type   = 'application/javascript';
     3253        } else {
     3254                $jsonp_callback = false;
     3255                $content_type   = 'application/json';
     3256        }
     3257
    32503258        if ( ! headers_sent() ) {
    3251                 header( 'Content-Type: application/json; charset=utf-8' );
     3259                header( 'Content-Type: ' . $content_type . '; charset=utf-8' );
    32523260                if ( null !== $r['response'] ) {
    32533261                        status_header( $r['response'] );
    32543262                }
    32553263        }
    32563264
    3257         echo wp_json_encode( $data );
     3265        $result = wp_json_encode( $data );
     3266        if ( $jsonp_callback ) {
     3267                echo '/**/' . $jsonp_callback . '(' . $result . ')';
     3268        } else {
     3269                echo $result;
     3270        }
    32583271        die();
    32593272}
    32603273
  • src/wp-includes/load.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    14731473 *
    14741474 * @since 5.0.0
    14751475 *
    1476  * @return bool True if Accepts or Content-Type headers contain application/json, false otherwise.
     1476 * @return bool True if Accepts or Content-Type headers contain application/json or application/javascript, false otherwise.
    14771477 */
    14781478function wp_is_json_request() {
    14791479
    1480         if ( isset( $_SERVER['HTTP_ACCEPT'] ) && false !== strpos( $_SERVER['HTTP_ACCEPT'], 'application/json' ) ) {
    1481                 return true;
     1480        $accepted = array( 'application/json', 'application/javascript' );
     1481
     1482        if ( isset( $_SERVER['HTTP_ACCEPT'] ) ) {
     1483                foreach ( $accepted as $type ) {
     1484                        if ( false !== strpos( $_SERVER['HTTP_ACCEPT'], $type ) ) {
     1485                                return true;
     1486                        }
     1487                }
    14821488        }
    14831489
    1484         if ( isset( $_SERVER['CONTENT_TYPE'] ) && 'application/json' === $_SERVER['CONTENT_TYPE'] ) {
     1490
     1491        if ( isset( $_SERVER['CONTENT_TYPE'] ) && in_array( $_SERVER['CONTENT_TYPE'], $accepted, true )  ) {
    14851492                return true;
    14861493        }
    14871494