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 50 of 50
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; }