WP_Customize_Nav_Menu_Item_Setting::value(): array|false

Get the instance data for a given nav_menu_item setting.

Description

See also

Return

array|false Instance data array, or false if the item is marked for deletion.

Source

public function value() {
	if ( $this->is_previewed && get_current_blog_id() === $this->_previewed_blog_id ) {
		$undefined  = new stdClass(); // Symbol.
		$post_value = $this->post_value( $undefined );

		if ( $undefined === $post_value ) {
			$value = $this->_original_value;
		} else {
			$value = $post_value;
		}
		if ( ! empty( $value ) && empty( $value['original_title'] ) ) {
			$value['original_title'] = $this->get_original_title( (object) $value );
		}
	} elseif ( isset( $this->value ) ) {
		$value = $this->value;
	} else {
		$value = false;

		// Note that an ID of less than one indicates a nav_menu not yet inserted.
		if ( $this->post_id > 0 ) {
			$post = get_post( $this->post_id );
			if ( $post && self::POST_TYPE === $post->post_type ) {
				$is_title_empty = empty( $post->post_title );
				$value          = (array) wp_setup_nav_menu_item( $post );
				if ( $is_title_empty ) {
					$value['title'] = '';
				}
			}
		}

		if ( ! is_array( $value ) ) {
			$value = $this->default;
		}

		// Cache the value for future calls to avoid having to re-call wp_setup_nav_menu_item().
		$this->value = $value;
		$this->populate_value();
		$value = $this->value;
	}

	if ( ! empty( $value ) && empty( $value['type_label'] ) ) {
		$value['type_label'] = $this->get_type_label( (object) $value );
	}

	return $value;
}

Changelog

VersionDescription
4.3.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.