WP_Rewrite::page_uri_index()
Retrieves all pages and attachments for pages URIs.
The attachments are for those that have pages as parents and will be retrieved.
Method of the class: WP_Rewrite{}
No Hooks.
Return
Array
. Array of page URIs as first element and attachment URIs as second element.
Usage
global $wp_rewrite; $wp_rewrite->page_uri_index();
Notes
- Global. wpdb. $wpdb WordPress database abstraction object.
Changelog
Since 2.5.0 | Introduced. |
WP_Rewrite::page_uri_index() WP Rewrite::page uri index code WP 6.5.2
public function page_uri_index() { global $wpdb; // Get pages in order of hierarchy, i.e. children after parents. $pages = $wpdb->get_results( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'page' AND post_status != 'auto-draft'" ); $posts = get_page_hierarchy( $pages ); // If we have no pages get out quick. if ( ! $posts ) { return array( array(), array() ); } // Now reverse it, because we need parents after children for rewrite rules to work properly. $posts = array_reverse( $posts, true ); $page_uris = array(); $page_attachment_uris = array(); foreach ( $posts as $id => $post ) { // URL => page name. $uri = get_page_uri( $id ); $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $id ) ); if ( ! empty( $attachments ) ) { foreach ( $attachments as $attachment ) { $attach_uri = get_page_uri( $attachment->ID ); $page_attachment_uris[ $attach_uri ] = $attachment->ID; } } $page_uris[ $uri ] = $id; } return array( $page_uris, $page_attachment_uris ); }