WP_Rewrite::page_uri_index()

You are here:
  • Help
  • WP_Rewrite::page_uri_index()

WP_Rewrite::page_uri_index()

Retrieves all page and attachments for pages URIs.

Description Description

The attachments are for those that have pages as parents and will be retrieved.


Top ↑

Return Return

(array) Array of page URIs as first element and attachment URIs as second element.


Top ↑

Source Source

File: wp-includes/class-wp-rewrite.php

426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
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 );
}


Top ↑

Changelog Changelog

Changelog
Version Description
2.5.0 Introduced.
Was this article helpful?
Dislike 0
Views: 7