WP_REST_URL_Details_Controller::get_metadata_from_meta_element() – Gets the metadata from a target meta element.

You appear to be a bot. Output may be restricted

Description

Gets the metadata from a target meta element.

Usage

$string = WP_REST_URL_Details_Controller::get_metadata_from_meta_element( $meta_elements, $attr, $attr_value );

Parameters

$meta_elements
( array ) required – { A multi-dimensional indexed array on success, else empty array.
$0
( string[] ) required – Meta elements with a content attribute.
$1
( string[] ) required – Content attribute's opening quotation mark.
$2
( string[] ) required – Content attribute's value for each meta element. }
$attr
( string ) required – Attribute that identifies the element with the target metadata.
$attr_value
( string ) required – The attribute's value that identifies the element with the target metadata.

Returns

string The metadata on success. Empty string if not found.

Source

File name: wordpress/wp-includes/rest-api/endpoints/class-wp-rest-url-details-controller.php


Lines:

1 to 51 of 51
  private function get_metadata_from_meta_element( $meta_elements, $attr, $attr_value ) {
    // Bail out if there are no meta elements.
    if ( empty( $meta_elements[0] ) ) {
      return '';
    }

    $metadata = '';
    $pattern  = '#' .
        /*
				 * Target this attribute and value to find the metadata element.
				 *
				 * Allows for (a) no, single, double quotes and (b) whitespace in the value.
				 *
				 * Why capture the opening quotation mark, i.e. (["\']), and then backreference,
				 * i.e \1, for the closing quotation mark?
				 * To ensure the closing quotation mark matches the opening one. Why? Attribute values
				 * can contain quotation marks, such as an apostrophe in the content.
				 */
        $attr . '=([\"\']??)\s*' . $attr_value . '\s*\1' .

        /*
				 * These are the options:
				 * - i : case insensitive
				 * - s : allows newline characters for the . match (needed for multiline elements)
				 * - U means non-greedy matching
				 */
        '#isU';

    // Find the metadata element.
    foreach ( $meta_elements[0] as $index => $element ) {
      preg_match( $pattern, $element, $match );

      // This is not the metadata element. Skip it.
      if ( empty( $match ) ) {
        continue;
      }

      /*
			 * Found the metadata element.
			 * Get the metadata from its matching content array.
			 */
      if ( isset( $meta_elements[2][ $index ] ) && is_string( $meta_elements[2][ $index ] ) ) {
        $metadata = trim( $meta_elements[2][ $index ] );
      }

      break;
    }

    return $metadata;
  }
 

 View on GitHub View on Trac