GRAYBYTE WORDPRESS FILE MANAGER4114

Server IP : 149.255.58.128 / Your IP : 216.73.216.207
System : Linux cloud516.thundercloud.uk 5.14.0-427.26.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 17 15:51:13 EDT 2024 x86_64
PHP Version : 8.2.28
Disable Function : allow_url_include, apache_child_terminate, apache_setenv, exec, passthru, pcntl_exec, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, proc_close, proc_get_status, proc_open, proc_terminate, shell_exec, show_source, system
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /home/wheelch2/www.wheelchairantalya.co.uk/wp-includes/
Upload Files :
Current_dir [ Writeable ] Document_root [ Writeable ]

Command :


Current File : /home/wheelch2/www.wheelchairantalya.co.uk/wp-includes//class-wp-http.php
<?php
/**
 * HTTP API: WP_Http class
 *
 * @package WordPress
 * @subpackage HTTP
 * @since 2.7.0
 */

// Don't load directly.
if ( ! defined( 'ABSPATH' ) ) {
	die( '-1' );
}

if ( ! class_exists( 'WpOrg\Requests\Autoload' ) ) {
	require ABSPATH . WPINC . '/Requests/src/Autoload.php';

	WpOrg\Requests\Autoload::register();
	WpOrg\Requests\Requests::set_certificate_path( ABSPATH . WPINC . '/certificates/ca-bundle.crt' );
}

/**
 * Core class used for managing HTTP transports and making HTTP requests.
 *
 * This class is used to consistently make outgoing HTTP requests easy for developers
 * while still being compatible with the many PHP configurations under which
 * WordPress runs.
 *
 * Debugging includes several actions, which pass different variables for debugging the HTTP API.
 *
 * @since 2.7.0
 */
#[AllowDynamicProperties]
class WP_Http {

	// Aliases for HTTP response codes.
	const HTTP_CONTINUE       = 100;
	const SWITCHING_PROTOCOLS = 101;
	const PROCESSING          = 102;
	const EARLY_HINTS         = 103;

	const OK                            = 200;
	const CREATED                       = 201;
	const ACCEPTED                      = 202;
	const NON_AUTHORITATIVE_INFORMATION = 203;
	const NO_CONTENT                    = 204;
	const RESET_CONTENT                 = 205;
	const PARTIAL_CONTENT               = 206;
	const MULTI_STATUS                  = 207;
	const IM_USED                       = 226;

	const MULTIPLE_CHOICES   = 300;
	const MOVED_PERMANENTLY  = 301;
	const FOUND              = 302;
	const SEE_OTHER          = 303;
	const NOT_MODIFIED       = 304;
	const USE_PROXY          = 305;
	const RESERVED           = 306;
	const TEMPORARY_REDIRECT = 307;
	const PERMANENT_REDIRECT = 308;

	const BAD_REQUEST                     = 400;
	const UNAUTHORIZED                    = 401;
	const PAYMENT_REQUIRED                = 402;
	const FORBIDDEN                       = 403;
	const NOT_FOUND                       = 404;
	const METHOD_NOT_ALLOWED              = 405;
	const NOT_ACCEPTABLE                  = 406;
	const PROXY_AUTHENTICATION_REQUIRED   = 407;
	const REQUEST_TIMEOUT                 = 408;
	const CONFLICT                        = 409;
	const GONE                            = 410;
	const LENGTH_REQUIRED                 = 411;
	const PRECONDITION_FAILED             = 412;
	const REQUEST_ENTITY_TOO_LARGE        = 413;
	const REQUEST_URI_TOO_LONG            = 414;
	const UNSUPPORTED_MEDIA_TYPE          = 415;
	const REQUESTED_RANGE_NOT_SATISFIABLE = 416;
	const EXPECTATION_FAILED              = 417;
	const IM_A_TEAPOT                     = 418;
	const MISDIRECTED_REQUEST             = 421;
	const UNPROCESSABLE_ENTITY            = 422;
	const LOCKED                          = 423;
	const FAILED_DEPENDENCY               = 424;
	const TOO_EARLY                       = 425;
	const UPGRADE_REQUIRED                = 426;
	const PRECONDITION_REQUIRED           = 428;
	const TOO_MANY_REQUESTS               = 429;
	const REQUEST_HEADER_FIELDS_TOO_LARGE = 431;
	const UNAVAILABLE_FOR_LEGAL_REASONS   = 451;

	const INTERNAL_SERVER_ERROR           = 500;
	const NOT_IMPLEMENTED                 = 501;
	const BAD_GATEWAY                     = 502;
	const SERVICE_UNAVAILABLE             = 503;
	const GATEWAY_TIMEOUT                 = 504;
	const HTTP_VERSION_NOT_SUPPORTED      = 505;
	const VARIANT_ALSO_NEGOTIATES         = 506;
	const INSUFFICIENT_STORAGE            = 507;
	const NOT_EXTENDED                    = 510;
	const NETWORK_AUTHENTICATION_REQUIRED = 511;

	/**
	 * Send an HTTP request to a URI.
	 *
	 * Please note: The only URI that are supported in the HTTP Transport implementation
	 * are the HTTP and HTTPS protocols.
	 *
	 * @since 2.7.0
	 *
	 * @param string       $url  The request URL.
	 * @param string|array $args {
	 *     Optional. Array or string of HTTP request arguments.
	 *
	 *     @type string       $method              Request method. Accepts 'GET', 'POST', 'HEAD', 'PUT', 'DELETE',
	 *                                             'TRACE', 'OPTIONS', or 'PATCH'.
	 *                                             Some transports technically allow others, but should not be
	 *                                             assumed. Default 'GET'.
	 *     @type float        $timeout             How long the connection should stay open in seconds. Default 5.
	 *     @type int          $redirection         Number of allowed redirects. Not supported by all transports.
	 *                                             Default 5.
	 *     @type string       $httpversion         Version of the HTTP protocol to use. Accepts '1.0' and '1.1'.
	 *                                             Default '1.0'.
	 *     @type string       $user-agent          User-agent value sent.
	 *                                             Default 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ).
	 *     @type bool         $reject_unsafe_urls  Whether to pass URLs through wp_http_validate_url().
	 *                                             Default false.
	 *     @type bool         $blocking            Whether the calling code requires the result of the request.
	 *                                             If set to false, the request will be sent to the remote server,
	 *                                             and processing returned to the calling code immediately, the caller
	 *                                             will know if the request succeeded or failed, but will not receive
	 *                                             any response from the remote server. Default true.
	 *     @type string|array $headers             Array or string of headers to send with the request.
	 *                                             Default empty array.
	 *     @type array        $cookies             List of cookies to send with the request. Default empty array.
	 *     @type string|array $body                Body to send with the request. Default null.
	 *     @type bool         $compress            Whether to compress the $body when sending the request.
	 *                                             Default false.
	 *     @type bool         $decompress          Whether to decompress a compressed response. If set to false and
	 *                                             compressed content is returned in the response anyway, it will
	 *                                             need to be separately decompressed. Default true.
	 *     @type bool         $sslverify           Whether to verify SSL for the request. Default true.
	 *     @type string       $sslcertificates     Absolute path to an SSL certificate .crt file.
	 *                                             Default ABSPATH . WPINC . '/certificates/ca-bundle.crt'.
	 *     @type bool         $stream              Whether to stream to a file. If set to true and no filename was
	 *                                             given, it will be dropped it in the WP temp dir and its name will
	 *                                             be set using the basename of the URL. Default false.
	 *     @type string       $filename            Filename of the file to write to when streaming. $stream must be
	 *                                             set to true. Default null.
	 *     @type int          $limit_response_size Size in bytes to limit the response to. Default null.
	 *
	 * }
	 * @return array|WP_Error {
	 *     Array of response data, or a WP_Error instance upon error.
	 *
	 *     @type \WpOrg\Requests\Utility\CaseInsensitiveDictionary $headers       Response headers keyed by name.
	 *     @type string                                            $body          Response body.
	 *     @type array                                             $response      {
	 *         Array of HTTP response data.
	 *
	 *         @type int|false    $code    HTTP response status code.
	 *         @type string|false $message HTTP response message.
	 *     }
	 *     @type WP_HTTP_Cookie[]                                  $cookies       Array of cookies set by the server.
	 *     @type string|null                                       $filename      Optional. Filename of the response.
	 *     @type WP_HTTP_Requests_Response|null                    $http_response Response object.
	 * }
	 */
	public function request( $url, $args = array() ) {
		$defaults = array(
			'method'              => 'GET',
			/**
			 * Filters the timeout value for an HTTP request.
			 *
			 * @since 2.7.0
			 * @since 5.1.0 The `$url` parameter was added.
			 *
			 * @param float  $timeout_value Time in seconds until a request times out. Default 5.
			 * @param string $url           The request URL.
			 */
			'timeout'             => apply_filters( 'http_request_timeout', 5, $url ),
			/**
			 * Filters the number of redirects allowed during an HTTP request.
			 *
			 * @since 2.7.0
			 * @since 5.1.0 The `$url` parameter was added.
			 *
			 * @param int    $redirect_count Number of redirects allowed. Default 5.
			 * @param string $url            The request URL.
			 */
			'redirection'         => apply_filters( 'http_request_redirection_count', 5, $url ),
			/**
			 * Filters the version of the HTTP protocol used in a request.
			 *
			 * @since 2.7.0
			 * @since 5.1.0 The `$url` parameter was added.
			 *
			 * @param string $version Version of HTTP used. Accepts '1.0' and '1.1'. Default '1.0'.
			 * @param string $url     The request URL.
			 */
			'httpversion'         => apply_filters( 'http_request_version', '1.0', $url ),
			/**
			 * Filters the user agent value sent with an HTTP request.
			 *
			 * @since 2.7.0
			 * @since 5.1.0 The `$url` parameter was added.
			 *
			 * @param string $user_agent WordPress user agent string.
			 * @param string $url        The request URL.
			 */
			'user-agent'          => apply_filters( 'http_headers_useragent', 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ), $url ),
			/**
			 * Filters whether to pass URLs through wp_http_validate_url() in an HTTP request.
			 *
			 * @since 3.6.0
			 * @since 5.1.0 The `$url` parameter was added.
			 *
			 * @param bool   $pass_url Whether to pass URLs through wp_http_validate_url(). Default false.
			 * @param string $url      The request URL.
			 */
			'reject_unsafe_urls'  => apply_filters( 'http_request_reject_unsafe_urls', false, $url ),
			'blocking'            => true,
			'headers'             => array(),
			'cookies'             => array(),
			'body'                => null,
			'compress'            => false,
			'decompress'          => true,
			'sslverify'           => true,
			'sslcertificates'     => ABSPATH . WPINC . '/certificates/ca-bundle.crt',
			'stream'              => false,
			'filename'            => null,
			'limit_response_size' => null,
		);

		// Pre-parse for the HEAD checks.
		$args = wp_parse_args( $args );

		// By default, HEAD requests do not cause redirections.
		if ( isset( $args['method'] ) && 'HEAD' === $args['method'] ) {
			$defaults['redirection'] = 0;
		}

		$parsed_args = wp_parse_args( $args, $defaults );
		/**
		 * Filters the arguments used in an HTTP request.
		 *
		 * @since 2.7.0
		 *
		 * @param array  $parsed_args An array of HTTP request arguments.
		 * @param string $url         The request URL.
		 */
		$parsed_args = apply_filters( 'http_request_args', $parsed_args, $url );

		// The transports decrement this, store a copy of the original value for loop purposes.
		if ( ! isset( $parsed_args['_redirection'] ) ) {
			$parsed_args['_redirection'] = $parsed_args['redirection'];
		}

		/**
		 * Filters the preemptive return value of an HTTP request.
		 *
		 * Returning a non-false value from the filter will short-circuit the HTTP request and return
		 * early with that value. A filter should return one of:
		 *
		 *  - An array containing 'headers', 'body', 'response', 'cookies', and 'filename' elements
		 *  - A WP_Error instance
		 *  - boolean false to avoid short-circuiting the response
		 *
		 * Returning any other value may result in unexpected behavior.
		 *
		 * @since 2.9.0
		 *
		 * @param false|array|WP_Error $response    A preemptive return value of an HTTP request. Default false.
		 * @param array                $parsed_args HTTP request arguments.
		 * @param string               $url         The request URL.
		 */
		$pre = apply_filters( 'pre_http_request', false, $parsed_args, $url );

		if ( false !== $pre ) {
			return $pre;
		}

		if ( function_exists( 'wp_kses_bad_protocol' ) ) {
			if ( $parsed_args['reject_unsafe_urls'] ) {
				$url = wp_http_validate_url( $url );
			}
			if ( $url ) {
				$url = wp_kses_bad_protocol( $url, array( 'http', 'https', 'ssl' ) );
			}
		}

		$parsed_url = parse_url( $url );

		if ( empty( $url ) || empty( $parsed_url['scheme'] ) ) {
			$response = new WP_Error( 'http_request_failed', __( 'A valid URL was not provided.' ) );
			/** This action is documented in wp-includes/class-wp-http.php */
			do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url );
			return $response;
		}

		if ( $this->block_request( $url ) ) {
			$response = new WP_Error( 'http_request_not_executed', __( 'User has blocked requests through HTTP.' ) );
			/** This action is documented in wp-includes/class-wp-http.php */
			do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url );
			return $response;
		}

		// If we are streaming to a file but no filename was given drop it in the WP temp dir
		// and pick its name using the basename of the $url.
		if ( $parsed_args['stream'] ) {
			if ( empty( $parsed_args['filename'] ) ) {
				$parsed_args['filename'] = get_temp_dir() . basename( $url );
			}

			// Force some settings if we are streaming to a file and check for existence
			// and perms of destination directory.
			$parsed_args['blocking'] = true;
			if ( ! wp_is_writable( dirname( $parsed_args['filename'] ) ) ) {
				$response = new WP_Error( 'http_request_failed', __( 'Destination directory for file streaming does not exist or is not writable.' ) );
				/** This action is documented in wp-includes/class-wp-http.php */
				do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url );
				return $response;
			}
		}

		if ( is_null( $parsed_args['headers'] ) ) {
			$parsed_args['headers'] = array();
		}

		// WP allows passing in headers as a string, weirdly.
		if ( ! is_array( $parsed_args['headers'] ) ) {
			$processed_headers      = WP_Http::processHeaders( $parsed_args['headers'] );
			$parsed_args['headers'] = $processed_headers['headers'];
		}

		// Setup arguments.
		$headers = $parsed_args['headers'];
		$data    = $parsed_args['body'];
		$type    = $parsed_args['method'];
		$options = array(
			'timeout'   => $parsed_args['timeout'],
			'useragent' => $parsed_args['user-agent'],
			'blocking'  => $parsed_args['blocking'],
			'hooks'     => new WP_HTTP_Requests_Hooks( $url, $parsed_args ),
		);

		// Ensure redirects follow browser behavior.
		$options['hooks']->register( 'requests.before_redirect', array( static::class, 'browser_redirect_compatibility' ) );

		// Validate redirected URLs.
		if ( function_exists( 'wp_kses_bad_protocol' ) && $parsed_args['reject_unsafe_urls'] ) {
			$options['hooks']->register( 'requests.before_redirect', array( static::class, 'validate_redirects' ) );
		}

		if ( $parsed_args['stream'] ) {
			$options['filename'] = $parsed_args['filename'];
		}
		if ( empty( $parsed_args['redirection'] ) ) {
			$options['follow_redirects'] = false;
		} else {
			$options['redirects'] = $parsed_args['redirection'];
		}

		// Use byte limit, if we can.
		if ( isset( $parsed_args['limit_response_size'] ) ) {
			$options['max_bytes'] = $parsed_args['limit_response_size'];
		}

		// If we've got cookies, use and convert them to WpOrg\Requests\Cookie.
		if ( ! empty( $parsed_args['cookies'] ) ) {
			$options['cookies'] = WP_Http::normalize_cookies( $parsed_args['cookies'] );
		}

		// SSL certificate handling.
		if ( ! $parsed_args['sslverify'] ) {
			$options['verify']     = false;
			$options['verifyname'] = false;
		} else {
			$options['verify'] = $parsed_args['sslcertificates'];
		}

		// All non-GET/HEAD requests should put the arguments in the form body.
		if ( 'HEAD' !== $type && 'GET' !== $type ) {
			$options['data_format'] = 'body';
		}

		/**
		 * Filters whether SSL should be verified for non-local requests.
		 *
		 * @since 2.8.0
		 * @since 5.1.0 The `$url` parameter was added.
		 *
		 * @param bool|string $ssl_verify Boolean to control whether to verify the SSL connection
		 *                                or path to an SSL certificate.
		 * @param string      $url        The request URL.
		 */
		$options['verify'] = apply_filters( 'https_ssl_verify', $options['verify'], $url );

		// Check for proxies.
		$proxy = new WP_HTTP_Proxy();
		if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
			$options['proxy'] = new WpOrg\Requests\Proxy\Http( $proxy->host() . ':' . $proxy->port() );

			if ( $proxy->use_authentication() ) {
				$options['proxy']->use_authentication = true;
				$options['proxy']->user               = $proxy->username();
				$options['proxy']->pass               = $proxy->password();
			}
		}

		// Avoid issues where mbstring.func_overload is enabled.
		mbstring_binary_safe_encoding();

		try {
			$requests_response = WpOrg\Requests\Requests::request( $url, $headers, $data, $type, $options );

			// Convert the response into an array.
			$http_response = new WP_HTTP_Requests_Response( $requests_response, $parsed_args['filename'] );
			$response      = $http_response->to_array();

			// Add the original object to the array.
			$response['http_response'] = $http_response;
		} catch ( WpOrg\Requests\Exception $e ) {
			$response = new WP_Error( 'http_request_failed', $e->getMessage() );
		}

		reset_mbstring_encoding();

		/**
		 * Fires after an HTTP API response is received and before the response is returned.
		 *
		 * @since 2.8.0
		 *
		 * @param array|WP_Error $response    HTTP response or WP_Error object.
		 * @param string         $context     Context under which the hook is fired.
		 * @param string         $class       HTTP transport used.
		 * @param array          $parsed_args HTTP request arguments.
		 * @param string         $url         The request URL.
		 */
		do_action( 'http_api_debug', $response, 'response', 'WpOrg\Requests\Requests', $parsed_args, $url );
		if ( is_wp_error( $response ) ) {
			return $response;
		}

		if ( ! $parsed_args['blocking'] ) {
			return array(
				'headers'       => array(),
				'body'          => '',
				'response'      => array(
					'code'    => false,
					'message' => false,
				),
				'cookies'       => array(),
				'http_response' => null,
			);
		}

		/**
		 * Filters a successful HTTP API response immediately before the response is returned.
		 *
		 * @since 2.9.0
		 *
		 * @param array  $response    HTTP response.
		 * @param array  $parsed_args HTTP request arguments.
		 * @param string $url         The request URL.
		 */
		return apply_filters( 'http_response', $response, $parsed_args, $url );
	}

	/**
	 * Normalizes cookies for using in Requests.
	 *
	 * @since 4.6.0
	 *
	 * @param array $cookies Array of cookies to send with the request.
	 * @return WpOrg\Requests\Cookie\Jar Cookie holder object.
	 */
	public static function normalize_cookies( $cookies ) {
		$cookie_jar = new WpOrg\Requests\Cookie\Jar();

		foreach ( $cookies as $name => $value ) {
			if ( $value instanceof WP_Http_Cookie ) {
				$attributes                 = array_filter(
					$value->get_attributes(),
					static function ( $attr ) {
						return null !== $attr;
					}
				);
				$cookie_jar[ $value->name ] = new WpOrg\Requests\Cookie( (string) $value->name, $value->value, $attributes, array( 'host-only' => $value->host_only ) );
			} elseif ( is_scalar( $value ) ) {
				$cookie_jar[ $name ] = new WpOrg\Requests\Cookie( (string) $name, (string) $value );
			}
		}

		return $cookie_jar;
	}

	/**
	 * Match redirect behavior to browser handling.
	 *
	 * Changes 302 redirects from POST to GET to match browser handling. Per
	 * RFC 7231, user agents can deviate from the strict reading of the
	 * specification for compatibility purposes.
	 *
	 * @since 4.6.0
	 *
	 * @param string                  $location URL to redirect to.
	 * @param array                   $headers  Headers for the redirect.
	 * @param string|array            $data     Body to send with the request.
	 * @param array                   $options  Redirect request options.
	 * @param WpOrg\Requests\Response $original Response object.
	 */
	public static function browser_redirect_compatibility( $location, $headers, $data, &$options, $original ) {
		// Browser compatibility.
		if ( 302 === $original->status_code ) {
			$options['type'] = WpOrg\Requests\Requests::GET;
		}
	}

	/**
	 * Validate redirected URLs.
	 *
	 * @since 4.7.5
	 *
	 * @throws WpOrg\Requests\Exception On unsuccessful URL validation.
	 * @param string $location URL to redirect to.
	 */
	public static function validate_redirects( $location ) {
		if ( ! wp_http_validate_url( $location ) ) {
			throw new WpOrg\Requests\Exception( __( 'A valid URL was not provided.' ), 'wp_http.redirect_failed_validation' );
		}
	}

	/**
	 * Tests which transports are capable of supporting the request.
	 *
	 * @since 3.2.0
	 * @deprecated 6.4.0 Use WpOrg\Requests\Requests::get_transport_class()
	 * @see WpOrg\Requests\Requests::get_transport_class()
	 *
	 * @param array  $args Request arguments.
	 * @param string $url  URL to request.
	 * @return string|false Class name for the first transport that claims to support the request.
	 *                      False if no transport claims to support the request.
	 */
	public function _get_first_available_transport( $args, $url = null ) {
		$transports = array( 'curl', 'streams' );

		/**
		 * Filters which HTTP transports are available and in what order.
		 *
		 * @since 3.7.0
		 * @deprecated 6.4.0 Use WpOrg\Requests\Requests::get_transport_class()
		 *
		 * @param string[] $transports Array of HTTP transports to check. Default array contains
		 *                             'curl' and 'streams', in that order.
		 * @param array    $args       HTTP request arguments.
		 * @param string   $url        The URL to request.
		 */
		$request_order = apply_filters_deprecated( 'http_api_transports', array( $transports, $args, $url ), '6.4.0' );

		// Loop over each transport on each HTTP request looking for one which will serve this request's needs.
		foreach ( $request_order as $transport ) {
			if ( in_array( $transport, $transports, true ) ) {
				$transport = ucfirst( $transport );
			}
			$class = 'WP_Http_' . $transport;

			// Check to see if this transport is a possibility, calls the transport statically.
			if ( ! call_user_func( array( $class, 'test' ), $args, $url ) ) {
				continue;
			}

			return $class;
		}

		return false;
	}

	/**
	 * Dispatches a HTTP request to a supporting transport.
	 *
	 * Tests each transport in order to find a transport which matches the request arguments.
	 * Also caches the transport instance to be used later.
	 *
	 * The order for requests is cURL, and then PHP Streams.
	 *
	 * @since 3.2.0
	 * @deprecated 5.1.0 Use WP_Http::request()
	 * @see WP_Http::request()
	 *
	 * @param string $url  URL to request.
	 * @param array  $args Request arguments.
	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
	 *                        A WP_Error instance upon error.
	 */
	private function _dispatch_request( $url, $args ) {
		static $transports = array();

		$class = $this->_get_first_available_transport( $args, $url );
		if ( ! $class ) {
			return new WP_Error( 'http_failure', __( 'There are no HTTP transports available which can complete the requested request.' ) );
		}

		// Transport claims to support request, instantiate it and give it a whirl.
		if ( empty( $transports[ $class ] ) ) {
			$transports[ $class ] = new $class();
		}

		$response = $transports[ $class ]->request( $url, $args );

		/** This action is documented in wp-includes/class-wp-http.php */
		do_action( 'http_api_debug', $response, 'response', $class, $args, $url );

		if ( is_wp_error( $response ) ) {
			return $response;
		}

		/** This filter is documented in wp-includes/class-wp-http.php */
		return apply_filters( 'http_response', $response, $args, $url );
	}

	/**
	 * Uses the POST HTTP method.
	 *
	 * Used for sending data that is expected to be in the body.
	 *
	 * @since 2.7.0
	 *
	 * @param string       $url  The request URL.
	 * @param string|array $args Optional. Override the defaults.
	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
	 *                        A WP_Error instance upon error. See WP_Http::response() for details.
	 */
	public function post( $url, $args = array() ) {
		$defaults    = array( 'method' => 'POST' );
		$parsed_args = wp_parse_args( $args, $defaults );
		return $this->request( $url, $parsed_args );
	}

	/**
	 * Uses the GET HTTP method.
	 *
	 * Used for sending data that is expected to be in the body.
	 *
	 * @since 2.7.0
	 *
	 * @param string       $url  The request URL.
	 * @param string|array $args Optional. Override the defaults.
	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
	 *                        A WP_Error instance upon error. See WP_Http::response() for details.
	 */
	public function get( $url, $args = array() ) {
		$defaults    = array( 'method' => 'GET' );
		$parsed_args = wp_parse_args( $args, $defaults );
		return $this->request( $url, $parsed_args );
	}

	/**
	 * Uses the HEAD HTTP method.
	 *
	 * Used for sending data that is expected to be in the body.
	 *
	 * @since 2.7.0
	 *
	 * @param string       $url  The request URL.
	 * @param string|array $args Optional. Override the defaults.
	 * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'.
	 *                        A WP_Error instance upon error. See WP_Http::response() for details.
	 */
	public function head( $url, $args = array() ) {
		$defaults    = array( 'method' => 'HEAD' );
		$parsed_args = wp_parse_args( $args, $defaults );
		return $this->request( $url, $parsed_args );
	}

	/**
	 * Parses the responses and splits the parts into headers and body.
	 *
	 * @since 2.7.0
	 *
	 * @param string $response The full response string.
	 * @return array {
	 *     Array with response headers and body.
	 *
	 *     @type string $headers HTTP response headers.
	 *     @type string $body    HTTP response body.
	 * }
	 */
	public static function processResponse( $response ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
		$response = explode( "\r\n\r\n", $response, 2 );

		return array(
			'headers' => $response[0],
			'body'    => isset( $response[1] ) ? $response[1] : '',
		);
	}

	/**
	 * Transforms header string into an array.
	 *
	 * @since 2.7.0
	 *
	 * @param string|array $headers The original headers. If a string is passed, it will be converted
	 *                              to an array. If an array is passed, then it is assumed to be
	 *                              raw header data with numeric keys with the headers as the values.
	 *                              No headers must be passed that were already processed.
	 * @param string       $url     Optional. The URL that was requested. Default empty.
	 * @return array {
	 *     Processed string headers. If duplicate headers are encountered,
	 *     then a numbered array is returned as the value of that header-key.
	 *
	 *     @type array            $response {
	 *         @type int    $code    The response status code. Default 0.
	 *         @type string $message The response message. Default empty.
	 *     }
	 *     @type array            $newheaders The processed header data as a multidimensional array.
	 *     @type WP_Http_Cookie[] $cookies    If the original headers contain the 'Set-Cookie' key,
	 *                                        an array containing `WP_Http_Cookie` objects is returned.
	 * }
	 */
	public static function processHeaders( $headers, $url = '' ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
		// Split headers, one per array element.
		if ( is_string( $headers ) ) {
			// Tolerate line terminator: CRLF = LF (RFC 2616 19.3).
			$headers = str_replace( "\r\n", "\n", $headers );
			/*
			 * Unfold folded header fields. LWS = [CRLF] 1*( SP | HT ) <US-ASCII SP, space (32)>,
			 * <US-ASCII HT, horizontal-tab (9)> (RFC 2616 2.2).
			 */
			$headers = preg_replace( '/\n[ \t]/', ' ', $headers );
			// Create the headers array.
			$headers = explode( "\n", $headers );
		}

		$response = array(
			'code'    => 0,
			'message' => '',
		);

		/*
		 * If a redirection has taken place, The headers for each page request may have been passed.
		 * In this case, determine the final HTTP header and parse from there.
		 */
		for ( $i = count( $headers ) - 1; $i >= 0; $i-- ) {
			if ( ! empty( $headers[ $i ] ) && ! str_contains( $headers[ $i ], ':' ) ) {
				$headers = array_splice( $headers, $i );
				break;
			}
		}

		$cookies    = array();
		$newheaders = array();
		foreach ( (array) $headers as $tempheader ) {
			if ( empty( $tempheader ) ) {
				continue;
			}

			if ( ! str_contains( $tempheader, ':' ) ) {
				$stack   = explode( ' ', $tempheader, 3 );
				$stack[] = '';
				list( , $response['code'], $response['message']) = $stack;
				continue;
			}

			list($key, $value) = explode( ':', $tempheader, 2 );

			$key   = strtolower( $key );
			$value = trim( $value );

			if ( isset( $newheaders[ $key ] ) ) {
				if ( ! is_array( $newheaders[ $key ] ) ) {
					$newheaders[ $key ] = array( $newheaders[ $key ] );
				}
				$newheaders[ $key ][] = $value;
			} else {
				$newheaders[ $key ] = $value;
			}
			if ( 'set-cookie' === $key ) {
				$cookies[] = new WP_Http_Cookie( $value, $url );
			}
		}

		// Cast the Response Code to an int.
		$response['code'] = (int) $response['code'];

		return array(
			'response' => $response,
			'headers'  => $newheaders,
			'cookies'  => $cookies,
		);
	}

	/**
	 * Takes the arguments for a ::request() and checks for the cookie array.
	 *
	 * If it's found, then it upgrades any basic name => value pairs to WP_Http_Cookie instances,
	 * which are each parsed into strings and added to the Cookie: header (within the arguments array).
	 * Edits the array by reference.
	 *
	 * @since 2.8.0
	 *
	 * @param array $r Full array of args passed into ::request()
	 */
	public static function buildCookieHeader( &$r ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
		if ( ! empty( $r['cookies'] ) ) {
			// Upgrade any name => value cookie pairs to WP_HTTP_Cookie instances.
			foreach ( $r['cookies'] as $name => $value ) {
				if ( ! is_object( $value ) ) {
					$r['cookies'][ $name ] = new WP_Http_Cookie(
						array(
							'name'  => $name,
							'value' => $value,
						)
					);
				}
			}

			$cookies_header = '';
			foreach ( (array) $r['cookies'] as $cookie ) {
				$cookies_header .= $cookie->getHeaderValue() . '; ';
			}

			$cookies_header         = substr( $cookies_header, 0, -2 );
			$r['headers']['cookie'] = $cookies_header;
		}
	}

	/**
	 * Decodes chunk transfer-encoding, based off the HTTP 1.1 specification.
	 *
	 * Based off the HTTP http_encoding_dechunk function.
	 *
	 * @link https://tools.ietf.org/html/rfc2616#section-19.4.6 Process for chunked decoding.
	 *
	 * @since 2.7.0
	 *
	 * @param string $body Body content.
	 * @return string Chunked decoded body on success or raw body on failure.
	 */
	public static function chunkTransferDecode( $body ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
		// The body is not chunked encoded or is malformed.
		if ( ! preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', trim( $body ) ) ) {
			return $body;
		}

		$parsed_body = '';

		// We'll be altering $body, so need a backup in case of error.
		$body_original = $body;

		while ( true ) {
			$has_chunk = (bool) preg_match( '/^([0-9a-f]+)[^\r\n]*\r\n/i', $body, $match );
			if ( ! $has_chunk || empty( $match[1] ) ) {
				return $body_original;
			}

			$length       = hexdec( $match[1] );
			$chunk_length = strlen( $match[0] );

			// Parse out the chunk of data.
			$parsed_body .= substr( $body, $chunk_length, $length );

			// Remove the chunk from the raw data.
			$body = substr( $body, $length + $chunk_length );

			// End of the document.
			if ( '0' === trim( $body ) ) {
				return $parsed_body;
			}
		}
	}

	/**
	 * Determines whether an HTTP API request to the given URL should be blocked.
	 *
	 * Those who are behind a proxy and want to prevent access to certain hosts may do so. This will
	 * prevent plugins from working and core functionality, if you don't include `api.wordpress.org`.
	 *
	 * You block external URL requests by defining `WP_HTTP_BLOCK_EXTERNAL` as true in your `wp-config.php`
	 * file and this will only allow localhost and your site to make requests. The constant
	 * `WP_ACCESSIBLE_HOSTS` will allow additional hosts to go through for requests. The format of the
	 * `WP_ACCESSIBLE_HOSTS` constant is a comma separated list of hostnames to allow, wildcard domains
	 * are supported, eg `*.wordpress.org` will allow for all subdomains of `wordpress.org` to be contacted.
	 *
	 * @since 2.8.0
	 *
	 * @link https://core.trac.wordpress.org/ticket/8927 Allow preventing external requests.
	 * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_ACCESSIBLE_HOSTS
	 *
	 * @param string $uri URI of url.
	 * @return bool True to block, false to allow.
	 */
	public function block_request( $uri ) {
		// We don't need to block requests, because nothing is blocked.
		if ( ! defined( 'WP_HTTP_BLOCK_EXTERNAL' ) || ! WP_HTTP_BLOCK_EXTERNAL ) {
			return false;
		}

		$check = parse_url( $uri );
		if ( ! $check ) {
			return true;
		}

		$home = parse_url( get_option( 'siteurl' ) );

		// Don't block requests back to ourselves by default.
		if ( 'localhost' === $check['host'] || ( isset( $home['host'] ) && $home['host'] === $check['host'] ) ) {
			/**
			 * Filters whether to block local HTTP API requests.
			 *
			 * A local request is one to `localhost` or to the same host as the site itself.
			 *
			 * @since 2.8.0
			 *
			 * @param bool $block Whether to block local requests. Default false.
			 */
			return apply_filters( 'block_local_requests', false );
		}

		if ( ! defined( 'WP_ACCESSIBLE_HOSTS' ) ) {
			return true;
		}

		static $accessible_hosts = null;
		static $wildcard_regex   = array();
		if ( null === $accessible_hosts ) {
			$accessible_hosts = preg_split( '|,\s*|', WP_ACCESSIBLE_HOSTS );

			if ( str_contains( WP_ACCESSIBLE_HOSTS, '*' ) ) {
				$wildcard_regex = array();
				foreach ( $accessible_hosts as $host ) {
					$wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) );
				}
				$wildcard_regex = '/^(' . implode( '|', $wildcard_regex ) . ')$/i';
			}
		}

		if ( ! empty( $wildcard_regex ) ) {
			return ! preg_match( $wildcard_regex, $check['host'] );
		} else {
			return ! in_array( $check['host'], $accessible_hosts, true ); // Inverse logic, if it's in the array, then don't block it.
		}
	}

	/**
	 * Used as a wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7.
	 *
	 * @deprecated 4.4.0 Use wp_parse_url()
	 * @see wp_parse_url()
	 *
	 * @param string $url The URL to parse.
	 * @return bool|array False on failure; Array of URL components on success;
	 *                    See parse_url()'s return values.
	 */
	protected static function parse_url( $url ) {
		_deprecated_function( __METHOD__, '4.4.0', 'wp_parse_url()' );
		return wp_parse_url( $url );
	}

	/**
	 * Converts a relative URL to an absolute URL relative to a given URL.
	 *
	 * If an Absolute URL is provided, no processing of that URL is done.
	 *
	 * @since 3.4.0
	 *
	 * @param string $maybe_relative_path The URL which might be relative.
	 * @param string $url                 The URL which $maybe_relative_path is relative to.
	 * @return string An Absolute URL, in a failure condition where the URL cannot be parsed, the relative URL will be returned.
	 */
	public static function make_absolute_url( $maybe_relative_path, $url ) {
		if ( empty( $url ) ) {
			return $maybe_relative_path;
		}

		$url_parts = wp_parse_url( $url );
		if ( ! $url_parts ) {
			return $maybe_relative_path;
		}

		$relative_url_parts = wp_parse_url( $maybe_relative_path );
		if ( ! $relative_url_parts ) {
			return $maybe_relative_path;
		}

		// Check for a scheme on the 'relative' URL.
		if ( ! empty( $relative_url_parts['scheme'] ) ) {
			return $maybe_relative_path;
		}

		$absolute_path = $url_parts['scheme'] . '://';

		// Schemeless URLs will make it this far, so we check for a host in the relative URL
		// and convert it to a protocol-URL.
		if ( isset( $relative_url_parts['host'] ) ) {
			$absolute_path .= $relative_url_parts['host'];
			if ( isset( $relative_url_parts['port'] ) ) {
				$absolute_path .= ':' . $relative_url_parts['port'];
			}
		} else {
			$absolute_path .= $url_parts['host'];
			if ( isset( $url_parts['port'] ) ) {
				$absolute_path .= ':' . $url_parts['port'];
			}
		}

		// Start off with the absolute URL path.
		$path = ! empty( $url_parts['path'] ) ? $url_parts['path'] : '/';

		// If it's a root-relative path, then great.
		if ( ! empty( $relative_url_parts['path'] ) && '/' === $relative_url_parts['path'][0] ) {
			$path = $relative_url_parts['path'];

			// Else it's a relative path.
		} elseif ( ! empty( $relative_url_parts['path'] ) ) {
			// Strip off any file components from the absolute path.
			$path = substr( $path, 0, strrpos( $path, '/' ) + 1 );

			// Build the new path.
			$path .= $relative_url_parts['path'];

			// Strip all /path/../ out of the path.
			while ( strpos( $path, '../' ) > 1 ) {
				$path = preg_replace( '![^/]+/\.\./!', '', $path );
			}

			// Strip any final leading ../ from the path.
			$path = preg_replace( '!^/(\.\./)+!', '', $path );
		}

		// Add the query string.
		if ( ! empty( $relative_url_parts['query'] ) ) {
			$path .= '?' . $relative_url_parts['query'];
		}

		// Add the fragment.
		if ( ! empty( $relative_url_parts['fragment'] ) ) {
			$path .= '#' . $relative_url_parts['fragment'];
		}

		return $absolute_path . '/' . ltrim( $path, '/' );
	}

	/**
	 * Handles an HTTP redirect and follows it if appropriate.
	 *
	 * @since 3.7.0
	 *
	 * @param string $url      The URL which was requested.
	 * @param array  $args     The arguments which were used to make the request.
	 * @param array  $response The response of the HTTP request.
	 * @return array|false|WP_Error An HTTP API response array if the redirect is successfully followed,
	 *                              false if no redirect is present, or a WP_Error object if there's an error.
	 */
	public static function handle_redirects( $url, $args, $response ) {
		// If no redirects are present, or, redirects were not requested, perform no action.
		if ( ! isset( $response['headers']['location'] ) || 0 === $args['_redirection'] ) {
			return false;
		}

		// Only perform redirections on redirection http codes.
		if ( $response['response']['code'] > 399 || $response['response']['code'] < 300 ) {
			return false;
		}

		// Don't redirect if we've run out of redirects.
		if ( $args['redirection']-- <= 0 ) {
			return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
		}

		$redirect_location = $response['headers']['location'];

		// If there were multiple Location headers, use the last header specified.
		if ( is_array( $redirect_location ) ) {
			$redirect_location = array_pop( $redirect_location );
		}

		$redirect_location = WP_Http::make_absolute_url( $redirect_location, $url );

		// POST requests should not POST to a redirected location.
		if ( 'POST' === $args['method'] ) {
			if ( in_array( $response['response']['code'], array( 302, 303 ), true ) ) {
				$args['method'] = 'GET';
			}
		}

		// Include valid cookies in the redirect process.
		if ( ! empty( $response['cookies'] ) ) {
			foreach ( $response['cookies'] as $cookie ) {
				if ( $cookie->test( $redirect_location ) ) {
					$args['cookies'][] = $cookie;
				}
			}
		}

		return wp_remote_request( $redirect_location, $args );
	}

	/**
	 * Determines if a specified string represents an IP address or not.
	 *
	 * This function also detects the type of the IP address, returning either
	 * '4' or '6' to represent an IPv4 and IPv6 address respectively.
	 * This does not verify if the IP is a valid IP, only that it appears to be
	 * an IP address.
	 *
	 * @link http://home.deds.nl/~aeron/regex/ for IPv6 regex.
	 *
	 * @since 3.7.0
	 *
	 * @param string $maybe_ip A suspected IP address.
	 * @return int|false Upon success, '4' or '6' to represent an IPv4 or IPv6 address, false upon failure.
	 */
	public static function is_ip_address( $maybe_ip ) {
		if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $maybe_ip ) ) {
			return 4;
		}

		if ( str_contains( $maybe_ip, ':' ) && preg_match( '/^(((?=.*(::))(?!.*\3.+\3))\3?|([\dA-F]{1,4}(\3|:\b|$)|\2))(?4){5}((?4){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i', trim( $maybe_ip, ' []' ) ) ) {
			return 6;
		}

		return false;
	}
}

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 22 2025 15:46:24
1032 / wheelch2
0755
ID3
--
May 21 2025 00:30:57
1032 / wheelch2
0755
IXR
--
May 21 2025 00:30:57
1032 / wheelch2
0755
PHPMailer
--
May 21 2025 00:30:57
1032 / wheelch2
0755
Requests
--
May 21 2025 00:30:57
1032 / wheelch2
0755
SimplePie
--
May 21 2025 00:30:57
1032 / wheelch2
0755
Text
--
May 21 2025 00:30:57
1032 / wheelch2
0755
assets
--
May 21 2025 00:30:57
1032 / wheelch2
0755
block-bindings
--
May 21 2025 00:30:57
1032 / wheelch2
0755
block-patterns
--
May 21 2025 00:30:57
1032 / wheelch2
0755
block-supports
--
May 21 2025 00:30:57
1032 / wheelch2
0755
blocks
--
May 21 2025 00:30:57
1032 / wheelch2
0755
certificates
--
May 21 2025 00:30:57
1032 / wheelch2
0755
css
--
May 21 2025 00:30:57
1032 / wheelch2
0755
customize
--
May 21 2025 00:30:57
1032 / wheelch2
0755
fonts
--
May 21 2025 00:30:57
1032 / wheelch2
0755
html-api
--
May 21 2025 00:30:57
1032 / wheelch2
0755
images
--
May 21 2025 00:30:57
1032 / wheelch2
0755
interactivity-api
--
May 21 2025 00:30:57
1032 / wheelch2
0755
js
--
May 21 2025 00:30:57
1032 / wheelch2
0755
l10n
--
May 21 2025 00:30:57
1032 / wheelch2
0755
php-compat
--
May 21 2025 00:30:57
1032 / wheelch2
0755
pomo
--
May 21 2025 00:30:57
1032 / wheelch2
0755
rest-api
--
May 21 2025 00:30:57
1032 / wheelch2
0755
sitemaps
--
May 21 2025 00:30:57
1032 / wheelch2
0755
sodium_compat
--
May 21 2025 00:30:57
1032 / wheelch2
0755
style-engine
--
May 21 2025 00:30:57
1032 / wheelch2
0755
theme-compat
--
May 21 2025 00:30:57
1032 / wheelch2
0755
widgets
--
May 21 2025 00:30:57
1032 / wheelch2
0755
wp-backup
--
May 21 2025 00:30:57
1032 / wheelch2
0755
.htaccess
0.124 KB
May 21 2025 00:30:57
1032 / wheelch2
0444
admin-bar.php
36.236 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
admin.php
0 KB
March 02 2024 06:00:08
1032 / wheelch2
0644
atomlib.php
11.795 KB
September 18 2024 20:20:16
1032 / wheelch2
0644
author-template.php
18.507 KB
May 14 2023 16:58:24
1032 / wheelch2
0644
block-bindings.php
5.463 KB
June 12 2024 11:44:14
1032 / wheelch2
0644
block-editor.php
28.122 KB
March 17 2025 13:03:30
1032 / wheelch2
0644
block-i18n.json
0.309 KB
August 11 2021 08:08:02
1032 / wheelch2
0644
block-patterns.php
12.903 KB
November 29 2024 22:46:22
1032 / wheelch2
0644
block-template-utils.php
60.456 KB
March 07 2025 17:55:24
1032 / wheelch2
0644
block-template.php
14.996 KB
March 18 2025 22:08:26
1032 / wheelch2
0644
blocks.php
109.113 KB
April 30 2025 18:30:12
1032 / wheelch2
0644
bookmark-template.php
12.469 KB
March 19 2025 23:15:36
1032 / wheelch2
0644
bookmark.php
15.065 KB
March 23 2024 14:20:12
1032 / wheelch2
0644
cache-compat.php
5.829 KB
October 10 2022 17:22:12
1032 / wheelch2
0644
cache.php
13.158 KB
October 10 2022 17:22:12
1032 / wheelch2
0644
canonical.php
33.714 KB
August 22 2024 22:47:16
1032 / wheelch2
0644
capabilities.php
41.717 KB
October 15 2024 13:13:20
1032 / wheelch2
0644
category-template.php
55.667 KB
September 25 2023 23:27:12
1032 / wheelch2
0644
category.php
12.528 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
class-IXR.php
2.555 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
class-avif-info.php
28.921 KB
April 26 2024 14:02:14
1032 / wheelch2
0644
class-feed.php
0.526 KB
September 30 2024 21:50:20
1032 / wheelch2
0644
class-http.php
0.358 KB
June 17 2022 10:20:14
1032 / wheelch2
0644
class-json.php
42.66 KB
February 03 2023 13:35:20
1032 / wheelch2
0644
class-oembed.php
0.392 KB
June 17 2022 10:20:14
1032 / wheelch2
0644
class-phpass.php
6.612 KB
September 17 2024 20:08:16
1032 / wheelch2
0644
class-phpmailer.php
0.648 KB
July 21 2020 11:58:02
1032 / wheelch2
0644
class-pop3.php
20.626 KB
October 25 2024 19:26:20
1032 / wheelch2
0644
class-requests.php
2.185 KB
April 05 2023 12:12:26
1032 / wheelch2
0644
class-simplepie.php
0.442 KB
September 30 2024 21:50:20
1032 / wheelch2
0644
class-smtp.php
0.446 KB
January 26 2021 13:45:58
1032 / wheelch2
0644
class-snoopy.php
36.831 KB
February 03 2023 13:35:20
1032 / wheelch2
0644
class-walker-category-dropdown.php
2.411 KB
September 14 2023 11:46:20
1032 / wheelch2
0644
class-walker-category.php
8.278 KB
September 08 2023 08:32:24
1032 / wheelch2
0644
class-walker-comment.php
13.888 KB
March 18 2024 15:46:14
1032 / wheelch2
0644
class-walker-nav-menu.php
11.762 KB
January 21 2025 21:26:24
1032 / wheelch2
0644
class-walker-page-dropdown.php
2.646 KB
September 14 2023 11:46:20
1032 / wheelch2
0644
class-walker-page.php
7.434 KB
September 14 2023 11:46:20
1032 / wheelch2
0644
class-wp-admin-bar.php
17.455 KB
July 17 2024 23:52:18
1032 / wheelch2
0644
class-wp-ajax-response.php
5.143 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-application-passwords.php
16.698 KB
April 03 2025 13:38:28
1032 / wheelch2
0644
class-wp-block-bindings-registry.php
8.265 KB
September 23 2024 11:35:16
1032 / wheelch2
0644
class-wp-block-bindings-source.php
2.922 KB
September 03 2024 15:33:16
1032 / wheelch2
0644
class-wp-block-editor-context.php
1.318 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-block-list.php
4.646 KB
November 02 2023 00:04:24
1032 / wheelch2
0644
class-wp-block-metadata-registry.php
11.616 KB
March 05 2025 22:17:24
1032 / wheelch2
0644
class-wp-block-parser-block.php
2.495 KB
June 26 2023 23:45:38
1032 / wheelch2
0644
class-wp-block-parser-frame.php
1.97 KB
September 20 2024 00:55:36
1032 / wheelch2
0644
class-wp-block-parser.php
11.262 KB
May 02 2024 19:09:16
1032 / wheelch2
0644
class-wp-block-pattern-categories-registry.php
5.245 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-block-patterns-registry.php
10.53 KB
September 27 2024 08:20:18
1032 / wheelch2
0644
class-wp-block-styles-registry.php
6.253 KB
February 04 2025 08:42:26
1032 / wheelch2
0644
class-wp-block-supports.php
5.494 KB
March 04 2025 13:06:28
1032 / wheelch2
0644
class-wp-block-template.php
1.985 KB
September 20 2024 01:07:12
1032 / wheelch2
0644
class-wp-block-templates-registry.php
7.062 KB
January 30 2025 21:19:26
1032 / wheelch2
0644
class-wp-block-type-registry.php
4.896 KB
October 12 2023 11:34:34
1032 / wheelch2
0644
class-wp-block-type.php
16.86 KB
May 01 2024 23:01:10
1032 / wheelch2
0644
class-wp-block.php
22.501 KB
February 14 2025 18:38:22
1032 / wheelch2
0644
class-wp-classic-to-block-menu-converter.php
3.992 KB
August 21 2023 16:51:20
1032 / wheelch2
0644
class-wp-comment-query.php
47.261 KB
June 21 2024 16:26:14
1032 / wheelch2
0644
class-wp-comment.php
9.216 KB
February 11 2025 13:40:30
1032 / wheelch2
0644
class-wp-customize-control.php
25.245 KB
February 08 2025 12:00:20
1032 / wheelch2
0644
class-wp-customize-manager.php
197.845 KB
February 08 2025 16:00:20
1032 / wheelch2
0644
class-wp-customize-nav-menus.php
56.066 KB
March 06 2025 23:48:24
1032 / wheelch2
0644
class-wp-customize-panel.php
10.459 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
class-wp-customize-section.php
10.946 KB
October 13 2024 18:09:12
1032 / wheelch2
0644
class-wp-customize-setting.php
29.26 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
class-wp-customize-widgets.php
70.518 KB
January 21 2025 22:38:24
1032 / wheelch2
0644
class-wp-date-query.php
34.895 KB
November 27 2024 11:40:18
1032 / wheelch2
0644
class-wp-dependencies.php
14.784 KB
August 25 2024 22:48:14
1032 / wheelch2
0644
class-wp-dependency.php
2.565 KB
November 25 2022 15:12:16
1032 / wheelch2
0644
class-wp-duotone.php
39.827 KB
June 14 2024 11:18:12
1032 / wheelch2
0644
class-wp-editor.php
70.64 KB
April 30 2025 18:30:12
1032 / wheelch2
0644
class-wp-embed.php
15.558 KB
April 14 2025 13:31:24
1032 / wheelch2
0644
class-wp-error.php
7.326 KB
February 21 2023 16:39:20
1032 / wheelch2
0644
class-wp-exception.php
0.247 KB
September 27 2024 18:28:14
1032 / wheelch2
0644
class-wp-fatal-error-handler.php
7.959 KB
October 22 2024 09:16:16
1032 / wheelch2
0644
class-wp-feed-cache-transient.php
3.102 KB
September 30 2024 21:50:20
1032 / wheelch2
0644
class-wp-feed-cache.php
0.946 KB
September 30 2024 21:50:20
1032 / wheelch2
0644
class-wp-hook.php
15.625 KB
September 18 2023 11:41:18
1032 / wheelch2
0644
class-wp-http-cookie.php
7.216 KB
June 24 2023 16:17:24
1032 / wheelch2
0644
class-wp-http-curl.php
12.247 KB
September 21 2023 17:29:12
1032 / wheelch2
0644
class-wp-http-encoding.php
6.532 KB
June 22 2023 13:57:24
1032 / wheelch2
0644
class-wp-http-ixr-client.php
3.419 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-http-proxy.php
5.84 KB
June 22 2023 13:36:26
1032 / wheelch2
0644
class-wp-http-requests-hooks.php
1.975 KB
December 15 2022 21:32:18
1032 / wheelch2
0644
class-wp-http-requests-response.php
4.297 KB
October 11 2023 06:05:26
1032 / wheelch2
0644
class-wp-http-response.php
2.907 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-http-streams.php
16.464 KB
September 21 2023 17:29:12
1032 / wheelch2
0644
class-wp-http.php
40.604 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
class-wp-image-editor-gd.php
19.689 KB
November 29 2024 23:48:16
1032 / wheelch2
0644
class-wp-image-editor-imagick.php
33.921 KB
March 18 2025 23:25:32
1032 / wheelch2
0644
class-wp-image-editor.php
17.116 KB
February 21 2025 20:25:24
1032 / wheelch2
0644
class-wp-list-util.php
7.269 KB
February 27 2024 22:38:16
1032 / wheelch2
0644
class-wp-locale-switcher.php
6.617 KB
January 08 2025 12:54:18
1032 / wheelch2
0644
class-wp-locale.php
16.487 KB
February 25 2025 22:40:22
1032 / wheelch2
0644
class-wp-matchesmapregex.php
1.785 KB
February 06 2024 01:25:14
1032 / wheelch2
0644
class-wp-meta-query.php
29.815 KB
April 22 2024 19:25:08
1032 / wheelch2
0644
class-wp-metadata-lazyloader.php
6.673 KB
May 11 2023 10:15:24
1032 / wheelch2
0644
class-wp-navigation-fallback.php
8.995 KB
October 06 2023 13:06:22
1032 / wheelch2
0644
class-wp-network-query.php
19.392 KB
June 21 2024 16:26:14
1032 / wheelch2
0644
class-wp-network.php
12.008 KB
September 13 2024 21:12:16
1032 / wheelch2
0644
class-wp-object-cache.php
17.113 KB
September 19 2024 11:12:16
1032 / wheelch2
0644
class-wp-oembed-controller.php
6.743 KB
March 06 2024 05:05:12
1032 / wheelch2
0644
class-wp-oembed.php
30.909 KB
February 28 2025 13:30:22
1032 / wheelch2
0644
class-wp-paused-extensions-storage.php
4.991 KB
September 03 2024 17:19:14
1032 / wheelch2
0644
class-wp-phpmailer.php
3.713 KB
January 08 2025 12:54:18
1032 / wheelch2
0644
class-wp-plugin-dependencies.php
24.722 KB
March 17 2025 22:40:26
1032 / wheelch2
0644
class-wp-post-type.php
29.961 KB
February 09 2025 11:09:22
1032 / wheelch2
0644
class-wp-post.php
6.336 KB
February 12 2025 18:11:26
1032 / wheelch2
0644
class-wp-query.php
154.319 KB
March 18 2025 23:34:26
1032 / wheelch2
0644
class-wp-recovery-mode-cookie-service.php
6.716 KB
October 04 2022 02:59:14
1032 / wheelch2
0644
class-wp-recovery-mode-email-service.php
10.921 KB
May 02 2023 14:45:22
1032 / wheelch2
0644
class-wp-recovery-mode-key-service.php
4.77 KB
February 17 2025 11:24:22
1032 / wheelch2
0644
class-wp-recovery-mode-link-service.php
3.382 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-recovery-mode.php
11.185 KB
February 23 2025 11:11:22
1032 / wheelch2
0644
class-wp-rewrite.php
62.195 KB
October 19 2024 22:54:18
1032 / wheelch2
0644
class-wp-role.php
2.464 KB
September 08 2023 08:32:24
1032 / wheelch2
0644
class-wp-roles.php
8.385 KB
September 03 2024 17:19:14
1032 / wheelch2
0644
class-wp-script-modules.php
19.007 KB
December 11 2024 15:20:18
1032 / wheelch2
0644
class-wp-scripts.php
27.68 KB
August 10 2024 22:00:14
1032 / wheelch2
0644
class-wp-session-tokens.php
7.147 KB
February 11 2025 11:14:22
1032 / wheelch2
0644
class-wp-simplepie-file.php
3.328 KB
September 30 2024 21:50:20
1032 / wheelch2
0644
class-wp-simplepie-sanitize-kses.php
1.865 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
class-wp-site-query.php
30.884 KB
September 11 2024 11:08:20
1032 / wheelch2
0644
class-wp-site.php
7.279 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-speculation-rules.php
7.351 KB
February 18 2025 22:32:22
1032 / wheelch2
0644
class-wp-styles.php
10.752 KB
August 10 2024 22:00:14
1032 / wheelch2
0644
class-wp-tax-query.php
19.097 KB
February 16 2024 21:47:12
1032 / wheelch2
0644
class-wp-taxonomy.php
18.124 KB
March 26 2025 22:07:28
1032 / wheelch2
0644
class-wp-term-query.php
39.911 KB
October 30 2024 22:34:20
1032 / wheelch2
0644
class-wp-term.php
5.174 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-text-diff-renderer-inline.php
0.956 KB
February 14 2024 19:27:10
1032 / wheelch2
0644
class-wp-text-diff-renderer-table.php
18.438 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
class-wp-textdomain-registry.php
10.235 KB
November 20 2024 02:50:24
1032 / wheelch2
0644
class-wp-theme-json-data.php
1.767 KB
June 04 2024 10:55:14
1032 / wheelch2
0644
class-wp-theme-json-resolver.php
34.9 KB
November 04 2024 02:34:16
1032 / wheelch2
0644
class-wp-theme-json-schema.php
7.194 KB
June 06 2024 07:02:16
1032 / wheelch2
0644
class-wp-theme-json.php
159.712 KB
March 19 2025 18:46:30
1032 / wheelch2
0644
class-wp-theme.php
64.268 KB
April 08 2025 13:18:28
1032 / wheelch2
0644
class-wp-token-map.php
27.947 KB
July 19 2024 22:44:16
1032 / wheelch2
0644
class-wp-url-pattern-prefixer.php
4.689 KB
February 18 2025 22:32:22
1032 / wheelch2
0644
class-wp-user-meta-session-tokens.php
2.92 KB
January 09 2019 05:04:50
1032 / wheelch2
0644
class-wp-user-query.php
42.632 KB
December 19 2024 10:24:24
1032 / wheelch2
0644
class-wp-user-request.php
2.251 KB
February 17 2025 11:24:22
1032 / wheelch2
0644
class-wp-user.php
22.455 KB
March 04 2025 14:19:22
1032 / wheelch2
0644
class-wp-walker.php
13.01 KB
July 26 2024 06:56:14
1032 / wheelch2
0644
class-wp-widget-factory.php
3.269 KB
September 12 2022 14:47:14
1032 / wheelch2
0644
class-wp-widget.php
17.997 KB
November 02 2024 15:01:20
1032 / wheelch2
0644
class-wp-xmlrpc-server.php
210.395 KB
February 08 2025 16:00:20
1032 / wheelch2
0644
class-wp.php
25.701 KB
January 29 2025 18:12:26
1032 / wheelch2
0644
class-wpdb.php
115.512 KB
February 11 2025 11:14:22
1032 / wheelch2
0644
class.wp-dependencies.php
0.364 KB
September 20 2022 13:17:12
1032 / wheelch2
0644
class.wp-scripts.php
0.335 KB
September 20 2022 13:17:12
1032 / wheelch2
0644
class.wp-styles.php
0.33 KB
September 20 2022 13:17:12
1032 / wheelch2
0644
comment-template.php
100.471 KB
December 08 2024 23:43:22
1032 / wheelch2
0644
comment.php
128.464 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
compat.php
15.992 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
cron.php
41.81 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
date.php
0.391 KB
June 17 2022 10:20:14
1032 / wheelch2
0644
default-constants.php
11.099 KB
September 30 2024 22:58:16
1032 / wheelch2
0644
default-filters.php
35.837 KB
March 25 2025 06:45:28
1032 / wheelch2
0644
default-widgets.php
2.241 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
deprecated.php
187.073 KB
March 13 2025 23:00:32
1032 / wheelch2
0644
embed-template.php
0.33 KB
June 17 2022 10:20:14
1032 / wheelch2
0644
embed.php
37.277 KB
January 24 2025 13:32:22
1032 / wheelch2
0644
error-protection.php
4.024 KB
May 02 2023 14:45:22
1032 / wheelch2
0644
feed-atom-comments.php
5.375 KB
March 04 2024 12:41:10
1032 / wheelch2
0644
feed-atom.php
3.048 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
feed-rdf.php
2.605 KB
January 29 2020 00:45:18
1032 / wheelch2
0644
feed-rss.php
1.161 KB
January 29 2020 00:45:18
1032 / wheelch2
0644
feed-rss2-comments.php
4.039 KB
March 04 2024 12:41:10
1032 / wheelch2
0644
feed-rss2.php
3.71 KB
January 29 2020 00:45:18
1032 / wheelch2
0644
feed.php
22.862 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
fonts.php
9.522 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
formatting.php
334.239 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
functions.php
280.946 KB
May 21 2025 00:30:01
1032 / wheelch2
0444
functions.wp-scripts.php
14.217 KB
May 26 2024 19:51:14
1032 / wheelch2
0644
functions.wp-styles.php
8.382 KB
May 26 2024 19:51:14
1032 / wheelch2
0644
general-template.php
168.58 KB
April 16 2025 09:38:42
1032 / wheelch2
0644
global-styles-and-settings.php
20.763 KB
February 14 2025 18:38:22
1032 / wheelch2
0644
http.php
24.719 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
https-detection.php
5.72 KB
February 24 2025 13:43:24
1032 / wheelch2
0644
https-migration.php
4.63 KB
July 10 2023 21:38:26
1032 / wheelch2
0644
kses.php
72.727 KB
January 21 2025 22:59:18
1032 / wheelch2
0644
l10n.php
66.924 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
link-template.php
154.103 KB
February 24 2025 13:43:24
1032 / wheelch2
0644
load.php
55.117 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
locale.php
0.158 KB
October 08 2019 16:19:04
1032 / wheelch2
0644
media-template.php
61.582 KB
February 17 2025 22:58:24
1032 / wheelch2
0644
media.php
215.115 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
meta.php
63.714 KB
February 23 2025 21:53:26
1032 / wheelch2
0644
ms-blogs.php
25.239 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
ms-default-constants.php
4.806 KB
June 13 2024 19:50:14
1032 / wheelch2
0644
ms-default-filters.php
6.48 KB
February 24 2023 01:23:20
1032 / wheelch2
0644
ms-deprecated.php
21.249 KB
April 12 2024 16:47:14
1032 / wheelch2
0644
ms-files.php
2.68 KB
April 30 2025 18:30:12
1032 / wheelch2
0644
ms-functions.php
89.436 KB
February 03 2025 19:52:24
1032 / wheelch2
0644
ms-load.php
19.417 KB
March 25 2024 17:19:18
1032 / wheelch2
0644
ms-network.php
3.693 KB
May 02 2023 10:26:24
1032 / wheelch2
0644
ms-settings.php
4.099 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
ms-site.php
40.352 KB
January 17 2025 00:12:26
1032 / wheelch2
0644
nav-menu-template.php
25.381 KB
January 22 2025 19:48:26
1032 / wheelch2
0644
nav-menu.php
43.333 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
option.php
100.649 KB
March 05 2025 22:59:22
1032 / wheelch2
0644
pluggable-deprecated.php
6.176 KB
February 03 2025 19:52:24
1032 / wheelch2
0644
pluggable.php
119.824 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
plugin.php
34.777 KB
May 21 2025 00:30:01
1032 / wheelch2
0444
post-formats.php
6.936 KB
May 27 2024 15:29:16
1032 / wheelch2
0644
post-template.php
67.039 KB
February 04 2025 00:32:24
1032 / wheelch2
0644
post-thumbnail-template.php
10.624 KB
December 20 2024 23:35:24
1032 / wheelch2
0644
post.php
284.875 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
query.php
36.167 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
registration-functions.php
0.195 KB
November 12 2020 11:17:08
1032 / wheelch2
0644
registration.php
0.195 KB
November 12 2020 11:17:08
1032 / wheelch2
0644
rest-api.php
97.907 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
revision.php
30.021 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
rewrite.php
19.083 KB
September 18 2024 18:08:12
1032 / wheelch2
0644
robots-template.php
5.063 KB
April 06 2022 14:33:04
1032 / wheelch2
0644
rss-functions.php
0.249 KB
November 16 2020 22:52:06
1032 / wheelch2
0644
rss.php
22.571 KB
September 18 2024 20:40:12
1032 / wheelch2
0644
script-loader.php
130.139 KB
April 30 2025 18:30:12
1032 / wheelch2
0644
script-modules.php
7.531 KB
October 13 2024 17:49:16
1032 / wheelch2
0644
session.php
0.252 KB
February 06 2020 06:33:12
1032 / wheelch2
0644
shortcodes.php
23.487 KB
May 25 2024 02:04:12
1032 / wheelch2
0644
sitemaps.php
3.162 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
speculative-loading.php
8.357 KB
February 27 2025 22:14:26
1032 / wheelch2
0644
spl-autoload-compat.php
0.431 KB
November 12 2020 11:17:08
1032 / wheelch2
0644
style-engine.php
7.386 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
taxonomy.php
172.097 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
template-canvas.php
0.531 KB
September 30 2023 23:22:28
1032 / wheelch2
0644
template-loader.php
3.093 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
template.php
23.588 KB
February 21 2024 19:26:08
1032 / wheelch2
0644
theme-i18n.json
1.49 KB
January 08 2025 12:36:24
1032 / wheelch2
0644
theme-previews.php
2.766 KB
December 08 2023 06:32:24
1032 / wheelch2
0644
theme-templates.php
6.092 KB
February 17 2025 17:49:20
1032 / wheelch2
0644
theme.json
8.5 KB
June 12 2024 05:11:14
1032 / wheelch2
0644
theme.php
131.155 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
update.php
36.624 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
user.php
171.702 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
vars.php
6.408 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
version.php
1.064 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
widgets.php
69.062 KB
May 21 2025 00:30:03
1032 / wheelch2
0644
wp-db.php
0.435 KB
July 21 2022 21:45:12
1032 / wheelch2
0644
wp-diff.php
0.78 KB
January 22 2025 19:48:26
1032 / wheelch2
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF