get all page IDs from wp_list_pages

I am looking for a way to output all page IDs from the following menu:

?php wp_list_pages('depth=1exclude='3,5,11')); ?

Only top level pages needed, therefore the 'depth=1'.

Any help appreciated.

Topic id wp-list-pages Wordpress

Category Web


$pages = get_pages(
    array (
        'parent'   => 0, /* it gives only child of current page id */
        'child_of' => 'parent or page_ID' /* Return child of child for page id. */
    )
);
$ids = wp_list_pluck( $pages, 'ID' );

wp_list_pages() is for formatted markup. Use get_pages() and wp_list_pluck():

$pages = get_pages(
    array (
        'parent'  => 0, // replaces 'depth' => 1,
        'exclude' => '3,5,11'
    )
);

$ids = wp_list_pluck( $pages, 'ID' );

$ids holds an array of page IDs now.


You can do this with WP_Query:

$args = array(
  'post_type' => 'page',
  'post_parent' => 0,
  'fields' => 'ids',
  'posts_per_page' => -1,
  'post__not_in' => array('3','5','11'),
);
$qry = new WP_Query($args);
var_dump($qry->posts);

As you can see from the var_dump, $qry->posts is an array of IDs

Reference:

http://codex.wordpress.org/Class_Reference/WP_Query

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.