Plugin Directory

Test out the new Plugin Directory and let us know what you think.

CMS Tree Page View

Adds a tree view of all pages & custom posts. Get a great overview + options to drag & drop to reorder & option to add multiple pages.

1.3.4 (June 2016)

  • Update Finnish translation files. Thanks translator!

1.3.3 (March 2016)

1.3.2 (March 2016)



  • Languages should be loaded from wordpress.org, if available there.
  • Removed German translation, because it's loaded from wordpress.org.




  • Fix for possible XSS attack.


  • Fixed so existing pages/posts keep their original author and last modified time. Thanks Heikki Paananen for finding and fixing this.


  • Updated German translation. Thank you translator!


  • Added Slovak translation. Thank you translator!



  • Add new filter "cms_tree_page_view_post_title". Use this filter to change to title being used to build the tree.


  • Roll back the feature with permissions to move pages. Too many people had problems with it.


  • Just a version bump because wordpress.org did not show version 1.2.24.


  • Fix problems with users not getting permissions to move pages.


  • Now only users with permission may move pages and custom posts and publish new posts. By default administrator and editors have these rights. Is checked using capability "move_cms_tree_view_page", so add that to any user you want to allow this for. Props mateuszdw, who made the very first pull request for this plugin! Thanks a lot!



  • Fixed incompatibility issue with plugin Advanced Custom Fields.


  • Removed part of a comment beacuse it mentionened a file on another domain and therefore violated the repository guidelines. Also moved some sprites in CSS from loading external to loading internal.


  • Added action "cms_tree_page_view_node_move_finish" that is called after a page is moved with drag and drop. Useful to for example clear caches.


  • Added Japanese translation


  • Removed references to, and files for, FirePHP, since it was not used anyway.


  • Just a version bump to make wordpress.org see my changes...


  • Fixed a PHP shortcode.
  • Fixed arguments passed to filter get_pages.



  • Added Serbo-Croatian translation by Andrijana Nikolic from webhostinggeeks


  • Fixed search not working
  • Fix height of clear search icon


  • Updated german translation
  • Updated POT file for translators


  • New fix for wp-Typography. Thanks to eceleste for digging into the problem and fixing it.






  • Fixed some notice warnings
  • Added Finnish translation
  • Fixed a security issue. Thanks to Julio POTIER (http://secu.boiteaweb.fr/) for finding and reporting.
  • Added nonce checks for options page and for adding new pages


  • Small design changes for the icons in the post overview screen
  • Added actions to check permissions when adding pages with AJAX


  • Removed an ugly pixel in the tree icon
  • Minor CSS changes to tree icon
  • Updated French translation


  • Hide "inside" link if post type is draft, since you can't create new post inside a page with status draft (limitation/bug with WordPress)
  • Added actions so other developers or plugins can control what pages/posts that are editiable and so on. Added filters are: cms_tree_page_view_post_can_edit, cms_tree_page_view_post_user_can_add_inside, cms_tree_page_view_post_user_can_add_after


  • Fixed wrong count if WPML where activated and future or private posts existed for a language
  • Show info message if no posts found after fetching posts with AJAX
  • Updated Swedish translation
  • Updated Russian translation - hopefully it works this time!
  • Updated POT file
  • Minor language fixes, like actually loading plugin textdomain before using any texts...


  • Added option to show the tree in the regular post overview screen. Makes the tree view fit into the regular workflow and GUI much better. To enable: go to settings > CMS Tree Page View > Tick the option "On post overview screen". Then go to for example the pages overview screen and in the upper right corner there will be an icon to switch between the regular list view and the tree view of this plugin.
  • Fixed so search button now looks more like the rest of the WordPress GUI
  • Fixed a undefined index warning
  • Fixed wrong language count for WPML-enabled post types
  • Perhaps fixed a problem with some other plugins, for example Formidable Pro
  • Added icon to settings page
  • Added updated Russian translation
  • Updated POT-file for translators


  • Added "Add new"-link next to headline, to better match the regular post overview page + it makes it possible to add new pages/posts when there are no pages/posts added (previously there needed to be at least one post added to be able to add new posts)
  • Added post count in parenthesis after each post status. Also makes the page match the regular post overview page a it more. Works for both built in post types and custom post types + if WPML is installed it will show post count for each language too.
  • Fixed a bug with sortables (well, I kinda forgot to load that script at all!) that made the plugin only work on the dashboard.
  • Fixed some IE-bugs


  • New: create multiple pages at once! Add multiple pages faster than ever before! You can even select if the new pages should be drafts or published. And ever drag and drop the pages to get the correct order even before adding them. I know - it's awesome!
  • Fixed: adds new pages with the correct and selected WPML-language
  • Added: you can now change the type of a post by draging the post between different trees on the dashboard. So if you have one custom post type called "Cars" and another called "Bicycles" you can now drag a page from the cars tree to the bicicyles tree and the post will converted to that post type. Pretty powerful feature that you used to need a separately plugin to be able to do.
  • Misc fixes
  • Added new POT-file for translators
  • I decided to call this version 1. I've been using this plugin for so long time now and I use it in almost every WordPress project I participate in (all projects with lots of pages), so with this new add-mulitple-page-feature it feels like it's time to go to version 1. Hope you'll agree! :)


  • Fixed popup closing to fast on Firefox.
  • Enable menu item setting by default for hierarchical post types during first install. It was confusing when it was enabled for pages but not for other post types. Consistency!
  • Added link to settings page to plugin listing.
  • Fixed: WPML-stuff now also works on custom post types


  • Fixed position of action div. Now it's always to the right of the page name.
  • Fixed so action div never is below the fold of the browser. Instead it's moved up until it's visible.
  • Fixed problem related to hoverIntent and mouseover and drag and drop. There was just to many wierd things going on so I switched to my own solution instead. Let me know if it works ok for you too now again!


  • Only output scripts and styles on pages that the plugin uses. This should speed up other parts of the WordPress admin a little tiny itsy bitsy bit.
  • Added a hopefully not to spammy box about donation and stuff. Hopefully it it encourages some of you to give it a good review or maybe even donate some money. I've spent a lot, lot, LOT of time developing this plugin you know ;)
  • Changed title on dashboard widgets and changed name of the menu item under each supported post type. Makes the titles/names look/feel a bit less dorky.
  • Show icons next to the headline of top of pages with the tree
  • Minor CSS changes like a little bit bigger text on the pages and a bit more spacing between each page. Makes a bit easier to drag and drop/move them around.
  • Changed javascript to to use on() istead on live()
  • Removed hoverIntent since that is included in WordPress by default
  • Started using hoverIndent to make the popup with page actions show after a short while for each page. This also means that you can move outside the actions-pop-up for a short while without the pop up being closed - a thing that annoyed me very much. This makes the whole popup actions div thingie feels less in-your-face all the time. Hope you like it as much as I do!


  • Added Estonian translation


  • Updated Lithuanian language


  • Fix for forever loading tree
  • No plus-sign on nodes that has no children



  • Updated Polish translation, including .mo-file



  • Fix for tree not remembering state
  • Fix for tree not opening on first click


  • Updated German translation
  • Fixed PHP notice messages
  • Updated swedish translation
  • Changed the way scripts and styles load, so it won't add scripts and styles to pages it shouldn't add scripts and styles to


  • Ops, forgot the .mo-file for the Danish translation. Hopefully I did it correct this time...


  • Added Danish translation


  • Hopefully fixed so scripts and styles can be loaded over https, if WP is accessed over https.



  • Celebrating more than 100.000 downloads and as a gift to you, the user of this plugin, I have removed the "Support the author"-text from the right column. No more nagging! Donations are still welcome though...


  • Polish translation added.


  • Added: You can now show the tree for regular posts. Appearently there are som plugins that use the hierarchy on posts.
  • Fixed: The capability required to show the tree for a post type should now be correct. Previously it was hard-coded to "edit_pages". Thanks to Kevin Behrens, author of plugin Role Scoper, for solving this.


  • Changed caller_get_posts (deprecated since 3.1) to ignore_sticky_posts
  • Norwegian translation added by Eigil Moe (http://www.eimoe.com)


  • Greek translation added by Mihalis Papanousis (http://aenaon.biz)
  • Hopefully fixed some more problems with columns


  • Second try: Hopefully fixed the problem that moving a page resulted in WPML losing the connection between the languages
  • Hungarian translation added
  • Small CSS fixes
  • Fixed compatiblity issue with ALO EasyMail Newsletter


  • Removed cookie.js
  • Updated jstree
  • If Keyboard Shortcuts was enabled for a user, title and content of a post could not be edited.
  • Drag and drop is now a bit more accurate and less "jerky"
  • Hopefully fixed the problem that moving a page resulted in WPML losing the connection between the languages
  • Dutch translation added
  • Hebrew translation added
  • Updated POT-file. Translators may want to check for added or updated words and sentences.
  • Fixed a notice-message



  • Czech translation added
  • Italian translation added, by Andrea Bersi (http://www.andreabersi.com)
  • require(dirname(FILE)."/functions.php"); instead of just require("functions.php");. Should fix problems with for example BackWPup.


  • Added links to PayPal and Flattr, so users who like the plugin can donate.


  • Upgraded jstree to rc2. This fixes the problems with drag & drop and mouse over that occured in WordPress 3.1 beta.


  • Readme-fix...


  • If a post has a custom post status, that status will be shown instead of "undefined". So now CMS Tree Page View works better together with plugins like "Edit flow".


  • CSS images loaded from google via https instead of http. Does this solve the problems you guys with https-sites had?
  • Users of IE could not add pages at the right place. All pages where added at the top instead of after or inside another page. Only tested in IE 8, please let me know of the other version..


  • changed so some icons are loaded from ajax.googleapis.com instead of Google Code. Google Code was a bit slow.


  • Something went wrong with last update at wordpress.org, people got 404-error when trying to download plugin. Let's see if this update helps..


  • Added Portuguese translation by Ricardo Tomasi. Thank you!
  • Celebration Edition: over 25.000 downloads of this plugin at WordPress.org!


  • You can now view items in the trash. A bit closer to a complete take over of the pages-page :)


  • fixed some notice-errors and switched some deprecated functions
  • updated swedish translation
  • fixed some strings that where untranslatable and updated POT-file (if I missed any, please let me know)
  • no longer allowed to add sub pages to a page with status draft, because if you edit the page and save it, wordpress will forget about the parent (and you will get confused)
  • started using hoverIntent for popup instead of regular mouseover, so the popups won't feel so aggressive - or no.. reverted this :(
  • when adding a page a text comes up so you know that something is going on
  • possible fix for magic fields and other plugins that deal with post columns


  • Updated POT-file, so translators may wan't to check their translations.
  • Added Spanish translation by Carlos Janini. Thank you!


  • a page can now be moved above a page with the same menu order. moved page will get the menu order of the page that it's moved aboved, and the other page will get a menu order of previous menu order + 1. i think/hope this is finally solved now!
  • using wp_update_post when moving pages (instead of sql directly). this should make this plugin work better with some cache plugins, for example DB Cache Reloaded
  • root of tree is added initially, without the need to run an ajax query. loading the root of the tree = super fast! child nodes that are not previosly open are still loaded with ajax, because I want to be sure that the plugin does not hang if there is a page with super-mega-lots of children.


  • pages that the user is not allowed to edit now get "dimmed". they will still be visible becuase a page a user is not allowed to edit, may have a child-page that they are allowed to edit, so the sub-pages must still be accessible
  • some problems with Ozh' Admin Drop Down Menu fixed (tree showed posts instead of pages)


  • quick fix: capability edit_pages required to view the tree menu, instead of editor (which led to administrators not being able to view the tree...)


  • added comment count to pop up
  • added support for custom columns in pop up = now you have the same information available in CMS Tree Vage View as in the normal page/post edit screen
  • fixed some colors to better match wordpress own style
  • editor capability required to view tree. previosly only administators chould see the tree in the menu, while everyone could view the tree on the dashboard.
  • no more infinite loops with role scoper installed
  • tested on WordPress Multisite


  • tree is activated for pages during install, so the user does not need to set up anything during first run


  • Was released only as a public beta together with wpml.org, to test the wpml-integration
  • Now supports custom post types.
  • Now compatible with WPML Multilangual CMS (wpml.org).
  • Uses WordPress own functions at some more places.
  • When searching and no posts found you now get a message so you know that there were no matches.
  • German translation added, by Thomas Dullnig (www.sevenspire.com). Thank you!
  • Lots of code rewritten for this update of CMS Tree Page View, so please let me know if it works or if I broke something!


  • Forgot to close a p-tag correctly. Now it should validate again!
  • Fixed a problem where move could seem to not work when trying to move pages when several pages had the same menu_order, so they where sorted by alpha instead.
  • fixed a problem with qtranslate that resulted in endless "loading tree..."
  • the thank you/need help/please donate-box is re-enabled upon upgrade/re-activation of the plugin. Just so you won't forget that you can donate! :)


  • updated french translation
  • new box for mouse-over/pop-up - please let me know what you think about it
  • new box: it's bigger so it's less likely that you slide out of it with your mouse (happend to me all the time! very annoying...) .
  • new box: more information can be fitted there. let me know if there is any information you would like to see in the popup (right now it will show you the last modified date + the id of the page)
  • new box: edit and view links are real links now, so you can edit or view pages in for example a new tab
  • new box: oh.. and it's much better looking! :)


  • jquery.cookie.js renamed to jquery.biscuit.js to fix problems with apache module mod_security. let me know if it actually works! :)
  • updated .pot-file, so translators out there may want to check if everything is up to date


  • password protected posts now show a lock icon (thanks to Seebz for contributing)


  • ok, now the texts should be translated. for real! thanks for the bug report!


  • when mouse over the litte arrow the cursor is now a hand again. it just feels a little bit better that way.
  • some texts where not translated due to wp_localize_script being called before load_plugin_textdomain. thanks for reporting this.


  • link to "add new page" when there were no pages now work
  • changed native js prompt to http://abeautifulsite.net/2008/12/jquery-alert-dialogs/ (mostly because you can use your other browser tabs while the dialog/prompt is open)
  • added a thank-you-please-donate-box. please do what it says! :)
  • started using menu_page_url instead of hard-coding path to plugin
  • now requires WordPress 3


  • you could get an error if used together with the "Simple Fields" WordPress plugin (yes, I used the same function name in both plugin! Fool me twice, shame on me.)


  • forgot to add styles to svn


  • Uses wp_localize_script to translate script. Previous method could lead to 404-error, although the file did exist.
  • More valid output
  • jsTree upgraded to 1.0rc
  • Code rewritten for upgraded jsTree
  • Added a "clear search"-button to the search box
  • Dashboard widget added again! Hooray!
  • Requires WordPress 3 because of jquery 1.4.2. If you are using WP 2.x you can try version 0.4.9 instead: http://downloads.wordpress.org/plugin/cms-tree-page-view.0.4.9.zip


  • added French translation by Bertrand Andres


  • added russian translation by Alexufo (www.serebniti.ru)
  • fixed a link that didn't change color on mouse over


  • remove some code that did not belong...
  • does not show auto-draft-posts in wp3


  • could get database error because post_content had no default value
  • removed usage of console.log and one alert. ouch!
  • when adding page inside, several posts could get menu_order = 0, which led to sorting problems


  • added Belorussian translation by Marcis G.
  • settings page did not check checkboxes by default
  • tree removed from dashboard due some problems with event bubbling (will be re-added later when problem is fixed)


  • translation now works in javascript (forgot to use load_plugin_textdomain)
  • added swedish translation by Måns Jonasson


  • forgot the domain for _e at some places


  • added .pot-file


  • more prepare for translation
  • fixed some <? into <?php


  • uses strict json (fix for jquery 1.4)
  • pages with no title now show "untitled" instead of just disappearing
  • uses get_the_title instead of getting the title direct from the db, making plugins such as qtranslate work
  • preparing for translation, using __ and _e


  • all | public: works on the dasboard
  • all | public: are now loaded using ajax. no more reloads!
  • added options page so you can choose where to show the tree (i.e. the dasboard or under "pages"...or both, of course!). only available for admins.
  • capability "edit_pages" required to view the tree


  • Possible fix for Fluency Admin


  • First public version.

Requires: 3.8 or higher
Compatible up to: 4.4.7
Last Updated: 9 months ago
Active Installs: 90,000+


4.9 out of 5 stars


0 of 5 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

1 person says it works.
0 people say it's broken.

100,2,2 100,3,3 100,1,1 67,3,2 50,2,1 67,3,2 100,3,3 100,1,1 100,1,1 100,3,3 0,3,0 100,1,1
50,4,2 100,1,1 100,1,1 67,3,2 100,3,3 100,2,2 100,3,3 100,2,2 75,4,3 100,4,4 100,6,6 100,1,1 100,1,1 100,1,1 100,1,1 100,1,1
100,6,6 100,2,2 71,7,5 0,1,0 100,1,1 100,2,2 100,5,5 100,5,5 75,4,3 100,1,1 100,5,5 100,2,2
100,3,3 100,1,1
100,4,4 100,2,2
100,1,1 100,1,1 100,1,1 100,4,4
50,2,1 0,1,0 0,1,0
100,1,1 80,5,4 100,1,1 100,3,3 100,5,5 100,2,2 80,5,4 89,9,8 100,1,1
100,9,9 100,1,1
100,8,8 100,5,5
100,1,1 100,1,1 92,13,12 100,2,2 93,14,13
0,1,0 100,1,1 50,4,2
100,5,5 75,8,6 75,4,3 100,3,3 50,2,1 100,7,7 100,1,1
83,6,5 100,2,2 100,4,4
82,11,9 100,1,1 100,1,1
100,1,1 100,4,4 100,1,1 100,10,10 75,4,3 100,3,3 100,5,5 100,1,1
100,1,1 100,4,4 100,3,3 100,1,1 100,6,6 100,3,3 100,1,1 100,1,1
100,2,2 100,1,1 80,5,4 100,1,1 100,7,7 100,2,2 100,1,1 40,5,2 100,1,1
50,2,1 100,2,2
100,2,2 100,3,3 100,1,1 100,2,2
100,4,4 100,2,2 100,2,2
100,3,3 0,1,0
100,1,1 100,7,7
100,1,1 100,4,4 100,1,1 100,1,1 100,1,1
100,4,4 100,1,1
100,1,1 100,1,1 89,9,8
100,1,1 100,1,1
100,3,3 100,2,2
100,4,4 100,3,3 75,4,3
100,1,1 100,2,2
100,1,1 100,3,3 100,2,2 100,1,1 100,1,1
100,1,1 100,1,1