Nested Pages


Why use Nested Pages?

  • Provides a simple & intuitive drag and drop interface for managing your page structure and post ordering
  • Enhanced quick edit functionality
  • Adds an editable, sortable tree view of your site’s page structure
  • Automatically generates a native WordPress menu that matches your page structure
  • A way to quickly add multiple pages & posts (ideal for development)
  • Works with any post type
  • Works on touch-enabled devices

For more information visit

Important: Nested Pages requires WordPress version 3.8 or higher, and PHP version 5.3.2 or higher.


  • Danish (Thomas Blomberg)
  • Dutch (Arno Vije)
  • English
  • Finnish (Roni Laukkarinen)
  • French (Nico Mollet)
  • German/Swiss German (Bartosz Podlewski)
  • Italian (Francesco Canovi)
  • Portuguese (Luis Martins)
  • Russian (Алексей Катаев)
  • Spanish (Raúl Martínez)
  • Swedish (Marcus Forsberg)
  • Turkish (Yuksel Beyti)

More Information

Generated Menu

The default menu generated automatically is named “Nested Pages”. You may rename the menu under Appearance > Menus, or under the Nested Pages settings.

Toggling the Page Tree

To toggle the child pages in and out of view, click the arrow to the left of a parent page. To quickly expand and collapse all pages, click the button in the upper right corner of the Nested Pages Screen.

Theme Use

To order by nested pages ordering in your theme, use the menu_order order option in your queries.

Hiding Pages from the Tree View

To hide a page from the tree view, open the quick edit form, select the option to “Hide in Nested Pages” and click Update to save the change.

To toggle the page back into view, click the “Show Hidden Pages” link at the top of the screen. The hidden pages are now visible, and can be re-edited to be shown.

Sorting Pages

To sort pages, hover over the page row. A menu icon (three lines) will appear. Click (or tap) this icon and drag to reorder within the menu. To drag a page underneath another, drag the page to the right and underneath the target parent. Visual indication is provided with an indentation. The drag and drop functionality works similarly to WordPress menus.

Menu Sync

After installing Nested Pages, a new menu will be available with the name Nested Pages. By default, menu syncing is enabled. To disable the sync, uncheck “Sync Menu” at the top of the Nested Pages screen. Recheck the box to enable it again and to run the sync.

Saving Performance: If your site has a very large number of pages, disabling page sync may help speed up the save time when using Nested Pages.

Editing the generated menu: Any manual changes made to the menu outside of the Nested Pages interface will be overwritten after the synchronization runs.

Hiding Pages in the Menu: To hide a page from the Nested Pages menu, click “Quick Edit” on it’s row, select “Hide in Nav Menu”, and click “update”. If menu sync is disabled, enable it now to sync the setting. Hidden pages are marked “(Hidden)”. If a page with child pages is hidden from the menu, all of it’s child pages will also be hidden.

WPML Compatibility

As of version 2.0.1, some features of Nested Pages are compatible with WPML. There are some important exceptions to take note of before upgrading to version 2 if WPML is installed, or if installing WPML on an existing Nested Pages enabled site.

WPML and menu support: Certain features within Nested Pages are disabled if WPML is installed and enabled. This is due to the complexity of menu synchronization across languages. While automatic menu sync remains available for the site’s primary language, additional languages must be synchronized using WPML’s menu synchronization methods. If menu sync is enabled within Nested Pages, a “Sync WPML Menus” link is available on non-primary language screens for convenience.

Custom Links: Custom links within Nested Pages are disabled on installs with WPML. Custom links may be added through the traditional Appearance > Menus interface. This ensures that WPML menus synchronize successfully across languages.


  • the_title($title, $post_id, $view) – Standard title filter. Applied to the title displayed in the nested interface. A third paramater, $view, is passed to check if the current title is being displayed in the nested view.
  • nestedpages_thumbnail($image, $post) – Customize the thumbnail for each page/post. Note: Thumbnails must be enabled for the post type.
  • nestedpages_thumbnail_fallback($image, $post) – Customize the thumbnail fallback for each page/post (if the post does not have a featured image). Note: Thumbnails must be enabled for the post type.
  • nestedpages_edit_link($link, $post) – Customize the “edit” link for each page/post in the nested interface.
  • nestedpages_edit_link_text($text, $post) – Customize the “edit” link text for each page/post in the nested interface.
  • nestedpages_view_link($link, $post) – Customize the “view” button link for each page/post in the nested interface.
  • nestedpages_view_link_text($text, $post) – Customize the “view” button text for each page/post in the nested interface.


  • Expandable tree view of your page structure

  • Enhanced quick edit offers configurable fields and additional options

  • Enhanced quick edit offers configurable fields and additional options

  • Sortable page nesting updates in real time

  • Toggle child pages for a clutter-free and nestable tree

  • Quickly add child posts without leaving the page tree

  • Clone existing pages for quick setup

  • Add pages in bulk – great for setting up new site structures quickly

  • Enable or disable nesting for any user group with the necessary permissions. Additional options offer more configuration options.

  • The Nested Pages interface can be enabled on a per-post-type basis, with customizable options for each type.


  1. Upload wp-nested-pages to the wp-content/plugins/ directory
  2. Activate the plugin through the Plugins menu in WordPress
  3. Click on the Pages Menu item to begin ordering pages. Nested Pages replaces the default Page management screen.
  4. To access the default the pages screen, select Default Pages located in the Pages submenu, or on the Nested Pages screen
  5. Additional options are available through the plugin settings at Settings > Nested Pages. Nested Pages may be enabled for any post type, and is configurable by post type. Options include quick edit field settings, thumbnail display and more.


Installation Instructions
  1. Upload wp-nested-pages to the wp-content/plugins/ directory
  2. Activate the plugin through the Plugins menu in WordPress
  3. Click on the Pages Menu item to begin ordering pages. Nested Pages replaces the default Page management screen.
  4. To access the default the pages screen, select Default Pages located in the Pages submenu, or on the Nested Pages screen
  5. Additional options are available through the plugin settings at Settings > Nested Pages. Nested Pages may be enabled for any post type, and is configurable by post type. Options include quick edit field settings, thumbnail display and more.
Can I use Nested Pages with other post types?

As of Nested Pages version 1.3.0, all post types are supported. To enable the Nested Pages interface for post types, update your settings under Settings > Nested Pages.

Is this plugin compatible with the WPML plugin?

Nested Pages is not currently compatible with WPML.

How do I access the WordPress “Pages” screen?

Click the “Default link in the page subnav, or on the Nested Pages screen. This item may be optionally hidden under the Nested Pages settings.

How do I save the order I create?

Post sorting and nesting is saved in the background after changes are made to the structure. If the “manual page order” option is enabled in the plugin options, you’ll need to click the “Sync Order” button at the top of the page to save.

How do I edit in bulk?

Bulk quick edits are not currently supported by Nested Pages. To edit in bulk, click on the “Default” link to use the native interface.

What about custom columns?

Custom columns are not currently supported by Nested Pages. To view custom columns, click on the “Default” link to view the native interface. If you are using WordPress SEO by Yoast, a page analysis indicator is shown.

What are those dots in my page rows?

If you have WordPress SEO by Yoast installed, your page score indicators are shown along with the pages.

Can I show the thumbnail in the tree view?

As of version 1.6, yes. Visit Settings > Nested Pages > Post Types to configure thumbnail settings for each post type. Filters are also available for customizing the images displayed.


Very useful

Very very useful especially when setting up a new site. Designed well with lots of useful features which are intuitive to use.

My only small gripe is that some of the design patterns used in the UI could better match those already established in WordPress admin. Especially the inexplicably massive round expand/collapse button which I just couldn’t live with.

Fixed somewhat with:

.nestedpages .child-toggle a {
  background: none;
  border: none;
  color: #72777c;
  margin-top: -13px;


.nestedpages .child-toggle a:hover {
  background: none;
  border: none;
  color: #23282d;

It might sound pedantry but it only takes a couple of third party plugins bringing their own style to make the whole Admin look feel a jarring mess (there are certainly much worse offenders out there!). A little more work could make the plugin feel seamless.

Doesn’t work with Elementor Plugin. Issue when you clone pages.

It is a great plugin. Sadness, it doesn’t clone appropriately pages edited through Elementor Plugin.
I found “Duplicate Page and Post” plugin as an alternative to use beside Nested Pages. In this case, you have ignore the “clone” option (Nested Pages) and look for the “duplicate” option on right column (inside of the page).

Awesome Plugin

This plugin offers features that should be default in the Admin area of any WordPress site. It’s great for not only web designers but also the end user, especially sites that have a lot of pages/posts that are nested by a specific order or type.

Simply amazing.

A dream come true for WordPress (+question)

Truly a dream find in plugin repository. I have been searching for months for a solution that would finally list all my pages in exact order as they appear in my admin and in my navigation menu. The fact that the menu is synced dynamically is a pure miracle for me. I was looking for a vice-versa solution originally, but it does not matter.

However, I do have an issue.

The plugin should display in frontend the order I drag&drop in backend. I use a category archive page for frontend list.

I just tested and this plugin assigns integers into Pages’ ‘order’ field, whenever drag&drop is being done. However on front end the list defaults to date of post, in descending order!
I can only force it to display this order in frontend by mandatory fullfilling 2 additional conditions:

  • Have the belowmentioned hook code in functions.php (with both order ‘asc’, and orderby ‘menu_order’) enabled
  • Go manually to Appearance > Menu and save the menu after each drag & drop change

It is only then that my ordering changes actually appear on frontend.

The hook code is this:

function change_category_order( $query ) {
    if ( $query->is_category() && $query->is_main_query() ) {
        $query->set( 'order', 'asc' ); // sortira po datumu posta
	$query->set( 'orderby', 'menu_order' ); // sortira po broju u Edit Page
add_action( 'pre_get_posts', 'change_category_order' );

If I exclude the hook code, the listing on frontend will fall to default, by date of post, and descending.
If I enable the hook code, but do not manually save the the Menu, the order in frontend will be garbled with no particular logic.

I guess I kinda found the workaround but it is far from using the plugin how it was intended. If you can shed more light on it I will be greatly thankful.

Read all 84 reviews

Contributors & Developers

“Nested Pages” is open source software. The following people have contributed to this plugin.


“Nested Pages” has been translated into 5 locales. Thank you to the translators for their contributions.

Translate “Nested Pages” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.



  • Fixes PHP warning if a search is performed with only one result when WP_DEBUG is enabled.
  • Fixes “undefined variable: c” PHP warning on some installs when WP_DEBUG is enabled.
  • Tested for WordPress 4.9 compatibility


  • Fixes bug where empty trash was not working under custom post types.
  • Fixes issue where sticky status could not be removed from post in quick edit.
  • Adds button to reset all plugin settings to default.


  • Fixes issue where no posts were displaying in nested view when a taxonomy was assigned to the post with a dash in the taxonomy name.


  • WPML compatibility added (Limited support, see the “More Information” section for important notes on support).
  • Important upgrade note: Custom links within the Nested Pages interface are disabled if WPML is installed and enabled. This is a potential breaking change, so please remove all custom links before updating. Links may be added back to menus by using the default WordPress Appearance > Menus editor.
  • Sort/Order options on non-page post type listings may now be added/removed. All options are hidden by default. To enable these, visit Settings > Nested Pages > Post Types. Under the desired post type, options may be enabled under the “Sort Options” row.
  • Bug fix where pages hidden from the Nested Pages view where displaying.
  • “Sticky” checkbox added to quick edit form under non-hierarchical post types.
  • Adds query optimizations to the listing view, reducing the overall number of queries made.


  • WPML beta release


  • Bug fix where saving post type options was enabling all post types


  • Added option to disable sorting per post type.
  • Added option to assign a post type page. Assigning a page to a post type adds “Add New” and “All” links to the page row for the given post type, along with a count of published posts for that type.
  • 24 hour time format support added to datepicker time field (follows General Time Format settings).
  • Custom fields generated by the plugin converted to hidden fields, preventing them from displaying in the post custom field meta box.
  • Bug fix where selecting “Hide in Nested Pages” was not saving in the quick edit interface.
  • rel=page removed from generated nav menu links which was causing errors in W3C validation.
  • Bug fix where menu sync was firing in the background when “Disable menu sync completely” option was selected.


  • Bug fix where admin bars were not displaying in Safari until hover
  • Bug fixes in display of post titles with html tags
  • Bug fix where date was not being saved in the quick edit form when the datepicker is not enabled


  • Multisite superadmins treated as admins (Thanks to Kristoffer Svanmark)
  • Text domain change from v1.6.4 integrated


  • Important security update: XSS vulnerability fix

  • Temporarily disabling front end redirects.

  • Temporarily rolling back to 1.6.3


  • PHP fatal error bug fix


  • Text domain updated to wp-nested-pages in compliance with translation requirments
  • Custom columns are now supported. Visit Settings > Nested Pages > Post Types to enable and order custom columns for each post type. Columns made available through the appropriate WordPress filters are available for selection, along with any taxonomies enabled for the post type.
  • Additional bug fixes in front end redirects that were causing duplicate slugs to be unreliable


  • Temporary removal of front end redirects (resolves issue of duplicate slugs being overriden)
  • Bug fix in fatal error with integration with Editorial Access Manager (Thanks to Marco Chiesi)


  • Bug fix that was throwing error in the nav menu


  • Bug fix in nav menu front end that was throwing error on sites with errors enabled.


  • Redesign of post type settings page, with additional options added.
  • Thumbnail support added to nested/sort view. Visit Settings > Nested Pages > Post Types to enable post thumbnails and set options.
  • Ability to customize quick edit fields for each post type added. Visit Settings > Nested Pages > Post Types to hide specific fields from the quick edit interface for each post type. Please note: specific fields are still hidden depending. on the current user’s roles/capabilities.
  • Bulk delete functionality added.
  • When adding multiple pages, the option to set them as hidden in the nav menu is now available.
  • Option added to manually sync the nav menu and page order.
  • Bug fix where Post menu wasn’t being replaced if option checked.
  • Modified date set to not update when reordering post order through the nested view.
  • Issue of duplicate posts item in nav menu resolved.
  • Fix for invalid rel attribute in generated nav menus, resulting in W3C validation error.
  • Filters added for title, edit links, and view links in the nested interface.
  • Bug fix where non-hierarchical post types were allowing nesting.
  • Bug fix where page redirect errors were showing while attempting to delete pages with the Page post type disabled. (Thanks to Evan Washkow)
  • Bug fix where non-ascii characters were not displaying correctly in the quick edit slug field.
  • Bug fix where “Add Child” was not available if menu sync was disabled completely.
  • Tab index set when adding a new child or multiple pages. No mouse necessary for adding in bulk.
  • Various UI enhancements.
  • Swedish translation added (Thanks to Marcus Forsberg).


  • Spanish translation added (Thanks to Raúl Martínez)
  • Various bug fixes related to WordPress 4.4 update
  • Duplicate menu items bug fix


  • Confirmation modal added when deleting a link item.
  • Bug fix where custom nav titles were not being saved.
  • Bug fix where replacing the default menus was breaking custom admin submenu links.
  • Minor interface enhancements.


  • Fixed bug when upgrading in an install with sync disabled.


  • Bug fix where hidden nav items in the nested view were deleting nav items from other menus.
  • Updated German Translation (Thanks to Martin Wecke)


  • Links now include all taxonomies/post types, enabling full control over the primary site menu from the Nested Pages interface. Start adding menu items by selecting “Add Link” from the top, or the link button on a specific row to add a child item.
  • Escape key closing of modal windows added.
  • Category filtering added to pages if categories enabled


  • Bug fix in quick edit where child pages display parent row data on update.


  • Clone/Duplicate functionality added – click the “clone” button in a row to clone/duplicate a post or page
  • Bug fix when attempting to trash Advanced Custom Field field groups (Thanks to Ben Plum)
  • Javascript rewritten for more future-friendly updates and feature builds
  • Draft filter added to list
  • Tested and confirmed WordPress 4.3 compatibility


  • Minor Bug fixes and optimizations
  • Bug fix in expand all button
  • Support added for page that are noindexed in WordPress SEO (Thanks to Joost de Valk)


  • Minor bug fix – modal not appearing when last item in the trash (provided by ClementRoy)
  • Option added to hide the “Sync Menu” checkbox (visit Settings > Nested Pages > General to hide)
  • Updated Danish Translation (Thomas Blomberg)
  • Confirmed compatibility with WordPress v4.2


  • Bug fix preventing some custom post types from being enabled
  • Bug fix – editors with sort capabilities menu sync enabled
  • WP Engine modal z-index fix


  • Permissions Bug fix in emptying trash (Thanks to Yuksel Beyti)


  • Minor UI bug fixes
  • Javascript Modal error bug fix
  • Turkish Translation (Provided by Yuksel Beyti)
  • Updated French Translation (Provided by @Inovagora)


  • Bug fix – resolves deprecated function issue with SEO by Yoast update v1.7.3. Critical for sites running both Nested Pages and WordPress SEO by Yoast


  • Bug fix – error when deleting a page from the nested view with menu sync disabled


  • Bug fix – Critical error that was overriding existing menu items outside of the Nested Pages generated menu. Other menus are now unaltered on save.


  • Bug fix – error when deleting the generated menu


  • Bug fix – error preventing new install resolved


  • Minor bug fixes
  • Editorial Access Manager Plugin Integration


  • Minor bug fixes
  • Minor UI enhancements
  • Changes to page and link menu items under appearance > menu now sync the Nested Pages listing when menu sync is enabled (other custom menu item types not yet supported).
  • Option added to disable nesting on hierarchical post types while maintaining sort functionality (ideal for live sites where link structures need to remain intact)
  • Updated Dutch Translation (Provided by Arno Vije)
  • Search capabilities added
  • Hash/Empty URLs no longer appended with http://


  • Russian Translation (Provided by Алексей Катаев)
  • Minor bug fix in add child page functionality that effects display of appended pages.


  • Bug fix in menu – pages now nestable under links.


  • UI enhancements in Quick Edits – default date fields replaced with datepicker and formatted time.


  • All public post types are now supported, both hierarchical and non-hierarchical. To enabled the Nested Pages interface for additional post types, visit Settings > Nested Pages and select the “Post Types” tab. The generated nav menu is tied to the pages type, which is enabled by default.
  • New interface for adding top-level posts/pages in bulk
  • New “Empty Trash” link for quickly emptying trash on enabled post types
  • Dutch translation (Provided by Arno Vije)


  • Bug fixes when using custom roles (Thanks to Luis Martins for troubleshooting help)


  • PHP 5.3.2+ is now required to run Nested Pages. Will not run or install on older versions of PHP.
  • Visual nesting indication limit removed
  • Portuguese Translation (Provided by Luis Martins)
  • Various bug fixes


  • Minor bug fixes in editor capabilities
  • Italian translation (Provided by Francesco Canovi)


  • New Child Pages Interface – Add child pages more efficiently with the new add child pages dialog. Add a single child page without leaving the Nested Pages view, or add multiple pages with one click. Reorder multiple child pages before saving with the drag and drop interface you’re accustomed to.
  • Tested for 4.1 compatibility
  • Page ID indicator added to Quick Edit dialog
  • Taxonomies & other custom menu items now visible in pages admin menu


  • Danish Translation (Provided by Thomas Blomberg)
  • Finnish Translation (Provided by Roni Laukkarinen)
  • German/Swiss German Translation (Provided by Bartosz Podlewski)
  • Added option to hide default pages
  • Added option to give editors ability to sort pages
  • Query filter added to main page listing


  • Minor UI Improvements – Current admin page now highlighted
  • Page post type bug – now verfied before plugin activation
  • Multisite bug fixes
  • French Translation (Provided by Nico Mollet)


  • Menu Sync bug fixes
  • Localization bug fixes


  • Password/Private functionality added to page quick edit
  • Flat taxonomy support added to page quick edit
  • Quick edit UI enhancements
  • Cross-domain icon font issue addressed


  • Option to customize the generated nav menu added


  • Status bug fix in pages view


  • Expanded/Collapsed states now saved for each user
  • Trash functionality added
  • Trashing pages now redirects to Nested Pages view
  • Trash link added to quickly get to a list of trashed pages
  • New “Add link” functionality – creates custom link menu items
  • Additional options added for generated menu items – title attribute, css classes, link target


  • Nested Pages