WordPress.org

Plugin Directory

CMS Tree Page View – Reorder Pages with a Drag-and-Drop Tree

CMS Tree Page View – Reorder Pages with a Drag-and-Drop Tree

Description

Reorder your WordPress pages by drag and drop, and manage your whole site structure from one visual tree — without ever leaving wp-admin.

CMS Tree Page View gives WordPress the CMS-like page tree it’s always been missing — a structured overview of all your pages and custom post types, much like the view found in a dedicated, page-focused CMS.

See your whole site hierarchy at a glance, then drag and drop to reorder your pages, and edit, view, add and search them — all without ever leaving the tree. You can even add many pages at once to lay out a brand-new site structure in seconds.

Actively maintained again by its original author, in use since 2010, and translated into more than 20 languages.

Perfect for content-heavy sites, agencies and editors who manage large page structures and want a fast, visual way to organize them.

Why CMS Tree Page View?

  • See everything in one place. Stop clicking through paginated page lists — view every page, and exactly how it’s nested, in a single tree.
  • Reordering that your theme already understands. The order you set is saved as WordPress’ own menu_order — not in a separate hidden table — so navigation menus, wp_list_pages() and other plugins can use it directly.
  • Change a post’s type just by dragging it. Drag an item from one tree into another to convert it — turn a page into a custom post type (or back) with no extra plugin. That’s rare among reordering plugins.
  • Not just pages. Enable the tree for posts, WooCommerce products or any public custom post type — hierarchical or not.

Features and highlights:

  • View your pages & posts in a tree-view, like you view files in Windows Explorer or the Finder on macOS
  • Drag and drop to rearrange/order your pages
  • Add pages after or inside a page
  • Add multiple pages at once – perfect for setting up a new site structure
  • Edit pages
  • View pages
  • Search pages
  • Available for both regular pages and custom posts
  • Works with both hierarchical and non-hierarchical post types
  • View your site hierarchy directly from the WordPress dashboard
  • Drag and drop between trees with different post types to change the post type of the dragged item, i.e. change a regular page to become any custom post type
  • Support for translation plugin WPML, so you can manage all the languages of your site

Show your pages on your site in the same order as they are in CMS Tree Page View

The plugin stores the order you set as WordPress’ “menu order”. It does not change how your
theme outputs your pages — to show them on the front end in the tree order, the query that
outputs them must sort by menu_order. See the FAQ below for ready-to-use code examples.

Screencast

Watch this screencast to see how easy you could be managing your pages:

Translations/Languages

Available in 20+ languages, including German, French, Spanish, Russian, Italian, Dutch, Polish, Swedish, Greek, Finnish and Japanese.

Always show your pages in the admin area

If you want to always have a list of your pages available in your WordPress admin area, please check out the plugin
Admin Menu Tree Page View.

Donation and more plugins

  • Check out my other plugin Simple History if you want to see a log of changes in your WordPress admin. With Simple History you can see login attempts (both failed and sucessful), page changes, plugin updated, and more. It’s a great way to view user actions on your site!
  • If you like this plugin don’t forget to donate to support further development.

Screenshots

Installation

  1. Upload the folder “cms-tree-page-view” to “/wp-content/plugins/”
  2. Activate the plugin through the “Plugins” menu in WordPress
  3. Done!

Now the tree with the pages will be visible both on the dashboard and in the menu under pages.

FAQ

I reordered my pages but the new order does not show on my website. Why?

CMS Tree Page View saves the order you set as WordPress’ “menu order”. It does not change how your theme or other plugins query and display your pages — that is up to the theme. To show your pages in the same order on the front end, the query that outputs them must sort by menu_order. For example:

$query = new WP_Query( array(
    'post_type'      => 'page',
    'orderby'        => 'menu_order',
    'order'          => 'ASC',
    'posts_per_page' => -1,
) );

For wp_list_pages() or a navigation menu, use 'sort_column' => 'menu_order'. Many themes sort by title or date by default, which is why the tree order may not appear automatically.

The tree does not load, or keeps showing “Loading…”

This is almost always a JavaScript error from another plugin or your theme that stops the tree from initializing. To track it down:

  1. Open your browser’s developer console (F12, then the Console tab) on the tree page and look for red errors.
  2. Temporarily switch to a default theme such as Twenty Twenty-Four.
  3. Deactivate your other plugins one by one to find the conflict.

Which post types can use the tree?

Any public post type. By default the tree is enabled for hierarchical post types (such as Pages). You can enable or disable it per post type under Settings → CMS Tree Page View.

Can I reorder posts, products or other custom post types?

Yes. The tree works with any public post type — pages, regular posts, WooCommerce products, and your own custom post types — as long as you enable it for that post type in the settings. It works with both hierarchical and non-hierarchical post types, and you can even drag an item from one tree into another to change its post type.

Which pages and posts can each user see in the tree?

The same ones they can see on WordPress’ built-in Posts and Pages screens. The tree follows WordPress’ own permissions, so each user only sees content they are allowed to manage. For example, a user who can edit only their own content (such as a Contributor) sees their own pages and posts in the tree, not other people’s drafts — exactly as on the standard WordPress overview screens.

Will the tree change or slow down the front end of my site?

No. CMS Tree Page View only adds the tree inside the WordPress admin; it loads nothing on the public side of your site, so it has no effect on front-end performance. The only thing it stores is the page order (as WordPress’ “menu order”) — see the first FAQ for how to display that order on the front end.

Does it work with the block editor (Gutenberg)?

Yes. CMS Tree Page View uses WordPress’ own edit links, so clicking “Edit” on a page opens it in whatever editor your site uses — the block editor (Gutenberg) or the classic editor. The tree itself works independently of the editor you have active.

Is the plugin maintained?

Yes. CMS Tree Page View has been taken back over by its original author and is being actively maintained again.

Reviews

May 15, 2026
I have used this plugin for years. Its very basic which is its strength. Instantly you get an expandable overview of your entire site and it really helps you plan your site architecture and canonical heirarchy from inside the dashboard.
April 2, 2025
Have used this for many many years, can’t do without it. There are other things out there with folders and such, but I love the simplicity of it and being able to see all my pages, posts and! products in the Dashboard. Get anywhere with 1 click. Clever little plug-in. Thank you!
March 6, 2025
Eenvoudige plugin. Op zich redelijk goed. Geeft goeie ingeklapte lijst van alle items. Maar je kunt ze niet sorteren. Ook geen paginatie. De zoekfunctie werkte bij mij niet goed.
Read all 361 reviews

Contributors & Developers

“CMS Tree Page View – Reorder Pages with a Drag-and-Drop Tree” is open source software. The following people have contributed to this plugin.

Contributors

“CMS Tree Page View – Reorder Pages with a Drag-and-Drop Tree” has been translated into 16 locales. Thank you to the translators for their contributions.

Translate “CMS Tree Page View – Reorder Pages with a Drag-and-Drop Tree” into your language.

Interested in development?

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

Changelog

1.7.1 (June 2026)

Security

  • The tree and its search now show each user only the posts and pages they are allowed to see, matching WordPress’ built-in posts and pages screens. Users who cannot edit other people’s content (such as Contributors) no longer see — or find by searching — other authors’ drafts in the tree.
  • When adding pages, the plugin now respects who is allowed to publish. If a user cannot publish a given post type, their new page is saved as “Pending review” instead of being published.

1.7.0 (June 2026)

The plugin is now maintained by its original author again and is being modernized. This release focuses on security and compatibility with current WordPress and PHP.

Changed

  • Tree rendering no longer runs three database queries per node. Loading a level of the tree now primes the post and meta caches in one query each and resolves all child counts in a single query, instead of one query each for the post, its meta, and a “has children?” check per node. On a tree with ~250 nodes this cut a single level’s queries from ~760 to 4 (about 7× faster).
  • Tested up to WordPress 7.0.
  • Now requires at least WordPress 6.0 and PHP 7.4.

Fixed

  • The tree now degrades gracefully instead of erroring on PHP 8+ when an unregistered post type is requested.
  • The settings screen no longer triggers “setting is unregistered / deprecated” and “headers already sent” notices on modern WordPress. The settings form is now handled directly by the plugin instead of routing through core options.php. Settings save exactly as before.
  • Removed a redundant database query that ran once per ancestor while expanding search results in the tree.

Security

  • Fixed a reflected XSS issue where the post_type URL parameter was output on the tree pages without escaping.
  • Fixed potential stored XSS in the page tree data — page titles, author display names, permalinks, and edit links are now safely JSON-encoded.
  • Added a capability check (manage_options) to the settings save handler.
  • Hardened database queries with prepared statements.
  • Added nonce (CSRF) protection to the dismissible notice boxes.
  • Added direct file access (ABSPATH) guards.

Older versions

The changelog for all previous releases (1.6.8 and earlier, back to the first release in 2010) is in changelog.txt, included with the plugin.

ysaetf7ruhjnm3e2x4tbtletpc35ckeb