WP_Http_Cookie::__construct() WordPress Method

The WP_Http_Cookie::__construct() function allows for the creation of a new WP_Http_Cookie object. This function accepts two parameters: The first parameter is the name of the cookie. This is a required parameter. The second parameter is the value of the cookie. This is an optional parameter.

WP_Http_Cookie::__construct( string|array $data, string $requested_url = '' ) #

Sets up this cookie object.


Description

The parameter $data should be either an associative array containing the indices names below or a header string detailing it.


Top ↑

Parameters

$data

(string|array)(Required)Raw cookie data as header string or data array.

  • 'name'
    (string) Cookie name.
  • 'value'
    (mixed) Value. Should NOT already be urlencoded.
  • 'expires'
    (string|int|null) Optional. Unix timestamp or formatted date. Default null.
  • 'path'
    (string) Optional. Path. Default '/'.
  • 'domain'
    (string) Optional. Domain. Default host of parsed $requested_url.
  • 'port'
    (int|string) Optional. Port or comma-separated list of ports. Default null.
  • 'host_only'
    (bool) Optional. host-only storage flag. Default true.

$requested_url

(string)(Optional)The URL which the cookie was set on, used for default $domain and $port values.

Default value: ''


Top ↑

Source

File: wp-includes/class-wp-http-cookie.php

	public function __construct( $data, $requested_url = '' ) {
		if ( $requested_url ) {
			$parsed_url = parse_url( $requested_url );
		}
		if ( isset( $parsed_url['host'] ) ) {
			$this->domain = $parsed_url['host'];
		}
		$this->path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : '/';
		if ( '/' !== substr( $this->path, -1 ) ) {
			$this->path = dirname( $this->path ) . '/';
		}

		if ( is_string( $data ) ) {
			// Assume it's a header string direct from a previous request.
			$pairs = explode( ';', $data );

			// Special handling for first pair; name=value. Also be careful of "=" in value.
			$name        = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) );
			$value       = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 );
			$this->name  = $name;
			$this->value = urldecode( $value );

			// Removes name=value from items.
			array_shift( $pairs );

			// Set everything else as a property.
			foreach ( $pairs as $pair ) {
				$pair = rtrim( $pair );

				// Handle the cookie ending in ; which results in a empty final pair.
				if ( empty( $pair ) ) {
					continue;
				}

				list( $key, $val ) = strpos( $pair, '=' ) ? explode( '=', $pair ) : array( $pair, '' );
				$key               = strtolower( trim( $key ) );
				if ( 'expires' === $key ) {
					$val = strtotime( $val );
				}
				$this->$key = $val;
			}
		} else {
			if ( ! isset( $data['name'] ) ) {
				return;
			}

			// Set properties based directly on parameters.
			foreach ( array( 'name', 'value', 'path', 'domain', 'port', 'host_only' ) as $field ) {
				if ( isset( $data[ $field ] ) ) {
					$this->$field = $data[ $field ];
				}
			}

			if ( isset( $data['expires'] ) ) {
				$this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] );
			} else {
				$this->expires = null;
			}
		}
	}


Top ↑

Changelog

Changelog
VersionDescription
5.2.0Added host_only to the $data parameter.
2.8.0Introduced.

The content displayed on this page has been created in part by processing WordPress source code files which are made available under the GPLv2 (or a later version) license by theĀ Free Software Foundation. In addition to this, the content includes user-written examples and information. All material is subject to review and curation by the WPPaste.com community.