WordPress函数page_uri_index()获取所有页面的别名和id

描述:

获取所有页面的别名和id

用法:

<?php $wp_rewrite->page_uri_index() ?>

参数:

None

源文件:

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 );
}