Page Navigation in WordPress – Using Sort Order

by Scott Ellis on July 28, 2009

in Content Management,WordPress How To

The following video provides an explanation on how to use sort order so that you get a scalable and organized approach to managing your navigation in WordPress. While geared at WordPress sites, this approach should work for any content management system that provides an automated or semi-automated way of creating navigation. This tutorial assumes that you are using a theme which supports multilevel navigation (i.e. drop down menus) and have a basic familiarity with using WordPress to edit and create content. You will also want to note this tutorial reference the function wp_list_pages(); and includes the parameter “sort_column=menu_order” (e.g. wp_list_pages(‘sort_column=menu_order’); ). For more on wp_list_pages and it’s parameters visit the WordPress Codex.

Related Posts:

{ 45 comments… read them below or add one }

1 andy August 3, 2009 at 6:47 pm

Thanks for the tips! One thing I am still not sure of is how you get the pages then to go into your top navigation like on your site???

Reply

2 Scott Ellis August 4, 2009 at 7:44 am

Andy, That is a slightly more technical issue. You have to use the wp_list_pages() function. See the list of Template Tags on Wordpress.org for more details but you’ll likely need to tell it what pages to include or which ones to ignore unless you want it to show every page in your site on your nav (not likely unless you only have a couple pages). Also, most WordPress themes are set up to support horizontal navigation (at least the themes I’ve built, used, delt with ..) but you’ll want to be sure yours has the css for that. If not you’ll get a vertical list of pages without the formatting you’re looking for since the wp_list_pages() tag will spit out an unordered list ul & li html tags respectively.

Reply

3 Cathy Tibbles August 6, 2009 at 1:29 pm

I like it! I had gotten to the point of db digits, don’t know why I didn’t think of this earlier!! :)

Reply

4 Scott Ellis August 11, 2009 at 4:39 pm

Yeah, DB digits could get messy! Glad this helps!

Reply

5 Carlos Mendez September 20, 2009 at 2:14 am

Thank you! Wonderful idea and it is very smart way to sort!

Reply

6 Scott Ellis September 20, 2009 at 8:29 am

Carlos, Glad you found it useful! More to come…

Reply

7 Ruby Koerper October 20, 2009 at 3:38 pm

I have a new web site–5 pages—I want to change the wording on the Purchasing page and also delete one line–have not figured out how to do that.

I did add two review to my Review page earlier with no problems, Thanks for any assistance, Ruby

Reply

8 Scott Ellis November 8, 2009 at 3:37 am

Ruby, Sorry for the long delay. I assume you are on wordpress? From what you described can’t you just go to the Page and change the words? I tried to go to your site but it isn’t coming up. Let me know…

Reply

9 ecmuscle November 10, 2009 at 6:17 am

Using 4 digits to control sort order, good idea that works.
Thanks for sharing.

Reply

10 Scott Ellis November 10, 2009 at 4:49 pm

Ruby, You should just be able to login to the backend and go to Pages > Purchase and edit your content. If that doesn’t work we’ll have to login and take a look.

Reply

11 Scott Ellis November 10, 2009 at 4:50 pm

ecmuscle, glad you like. It’s a fairly “old school” idea but still works well!

Reply

12 wakacje November 26, 2009 at 11:23 am

nice tips – 1000,2000 – good idea

Reply

13 chris December 11, 2009 at 6:22 pm

I see how you make a page the default home page and then how you add other pages and sub pages, but after doing that how do you create a menu item for your posts (the blog entries)?

Reply

14 Scott Ellis December 15, 2009 at 6:57 pm

Chris, you have to use the function wp_list_categories() and whatever parameters you want to go with that. Note: categories will not show up in the menu if there are no posts in that category.
Also, you’ll need to style the menu accordingly, depending on whether or not your theme supports it.

See more in the codex: wp_list_categories();

Reply

15 bran December 15, 2009 at 5:12 pm

hello. I just soaked up your workpress video, content map, very helpful … my question, wanting your recommendation, using wordpress as a blog, I see the smart uses of ‘catagories’ and the use of ‘tags’ as you explained … but how best should I think about this if I want to set up a ‘portfolio’ section of graphic work, a page parent with sub pages, that remains separate from posts tagged with categories … do you recommend setting portfolio under a ‘static’ page so its available on my main nav? or as ‘catagory’ or as a ‘static’ page? Both a category and static page?

That said, how would my subs of: print, web, ID, for instance be best served? My goal is to set up a ‘portfolio’ that remains full of just my work, not pulling in other elements, say blog posts with the same tag or catagory… Is it correct to think if I do this I need to reserve specific ‘catagory’ and ‘tags’ just for my porfolio section? Hope that makes sense. Again, thanks for the video content map … it was very helpful.

Reply

16 Scott Ellis December 15, 2009 at 6:54 pm

Bran, I would probably set it up as a category called “Portfolio”. You could also create sub-categories for portfolio types (print portfolio, web portfolio, etc…). In WordPress you can create a specific category template so that that main category page will look different than the usual category page. This helps because if you wanted the main page for “Print Portfolio” to look slightly different than “Web Portfolio” it’s just a matter of creating different category templates. If you don’t know css and html and a little php you’ll need someone to create them for you. (Feel free to contact me if you need a quote).

Underneath each category you would create a post for the particular “work” you are showing off. So if you create a portfolio of website’s you’ve built then each site would be a post.. make sense?

The top level portfolio page (category page, not static page) could show various works from all of the sub-categories of “Portfolio” or the most recent example from each… however you want it to work. Again, this kind of templating takes some coding but can definitely be done.

I would then think about tags for the individual category types. For example under the “Print Portfolio” category what are the logical tags (think of search terms) that people would want to see work based on.

Ideas might be:

Magazine Ad
Brochure
Poster
Postcards
Business Cards

Reply

17 Andrew December 22, 2009 at 2:34 pm

Just wanted to say this is a very smart idea! In addition, I have started using a plugin “My Page Order” which is a very small plugin that lets you sort your pages and drill down to sort sub pages as well using an easy drag and drop. The URL is http://wordpress.org/extend/plugins/my-page-order/ and it’s very handy! It’s not yet updated for 2.9 yet since WordPress added the trash feature for pages but the author has said he’s working on an update since 2.9 does not include a better way to sort pages.

Reply

18 Scott Ellis December 23, 2009 at 10:59 am

Andrew, thank you, I appreciate that. My Page Order is a good plugin. My personal preference is that I tend to prefer to not use plugins for what I can do with core WordPress functionality. 1) For the reason you mentioned, it’s a pain sometimes waiting for a plugin that has to get worked when a new version of WordPress is released. 2) It keeps everything lighter (fewer moving parts mean fewer points of failure where things can go wrong). That said, I use a lot of plugins, just not where it isn’t necessary. Still, I know that plugin makes things easier for a lot of people so enjoy and upgraded to 2.9 as soon as you can. Always a good idea to stay up to date on that.

Reply

19 Guest December 30, 2009 at 4:52 am

above video is not working… it shows the message ” Sorry, the video is currently not available”…..

Reply

20 Scott Ellis December 30, 2009 at 5:25 pm

Sorry for the delay but I was traveling when you sent this. I checked it and it seems to be working. Thanks for letting me know though.

Reply

21 kaka January 22, 2010 at 2:50 pm

Thanks for the tips

Reply

22 Scott Ellis January 26, 2010 at 12:47 am

Kaka, you bet.

Reply

23 Circe Link February 21, 2010 at 3:50 am

Thanks for the EASY guide! Much appreciated.

Reply

24 Alex March 9, 2010 at 11:40 am

Thanks. You just saved me a ton of (future) time.

Reply

25 Scott Ellis March 9, 2010 at 3:57 pm

Alex! You bet… that is the idea!

Reply

26 gailsserenity March 11, 2010 at 2:34 am

I am very new at blogs / blogging. I have been trying to make use of Categories and have put the posts in and they are not showing when I open up the site to look at Categories.
I know I'm missing something very simple. Keep in mind my newness at this.
I did do my own website using a template, so I can't figure out what my problem is.
Also. How do you choose the size of your text?

Reply

27 Scott Ellis March 11, 2010 at 3:03 am

Gail, That could be any number of things but the odds are you are putting your posts into categories that aren't set to display as you would expect in your theme. I don't provide technical support/changes (for free) so I'd start with getting an explanation from whomever set up your blog. If you can't get anywhere there send me an email and we'll chat.

Choosing the size of your font is part of an art called typography and I am definitely no expert in that field. It also depends on what you are applying it to. Google “learn typography” and you'll get a lot of good hits to look at.

Reply

28 gailsserenity March 11, 2010 at 6:42 pm

Hi Scott,
I'm setting up my own blog just as I did my own website, using templates.
I used American Authors.com for the templates and they were available on the phone and were very helpful.
It shouldn't be that difficult. I am a determined person, so I will finally get it. I will keep trying.
I just hoped you could help me. Can you tell me how to set the categories up for display? Or does that cost extra?
Thank you,
GailsSerenity

Reply

29 Scott Ellis March 15, 2010 at 3:38 am

Gails – I really do do any support through here. You're best bet would be to reach out to the WordPress Pro mailing list (if you have budget, it's for paid projects). Otherwise I'd hit the support forum/website for the template you used. If they don't have one you can try the WordPress.org support form to see if someone can help you.

Reply

30 gailsserenity March 15, 2010 at 5:04 pm

thank you. Maybe that will help.

Gail

Reply

31 richardnday March 15, 2010 at 8:46 pm

What an excellent video. I have read the information, but it didn't make sense to me. You elegant numbering solution really works well. Thanks for sharing this idea.

Reply

32 Scott Ellis March 16, 2010 at 8:34 pm

Richard, thanks for that. I really appreciate and glad you found it useful. Mission accomplished!

Reply

33 achintamitra March 19, 2010 at 9:35 pm

Thanks a lot Scott for your video. You've explained it very well and I was able to reorder the pages on my site.

Reply

34 Scott Ellis March 20, 2010 at 3:02 pm

Achintamitra, thanks! Glad it helped make it easier for you!

Reply

35 Don March 20, 2010 at 6:54 pm

Thanks for the video Scott. I'm having some trouble though. After sorting different pages in the correct order (I also used the 1000, 2000… technique), the pages are sorted properly in the Admin section, but not on the site.

I thought perhaps it was a cache thing, so I opened a different browser but the same order appeared.

How can I correct this?

Reply

36 Scott Ellis March 21, 2010 at 8:52 pm

Don – You might make sure the function that generates those pages (wp_list_pages()) includes an attribute for sorting them or isn't being over-ridden by a plugin or something else. It's a little hard to say without seeing the back end. You can learn more about wp_list_pages() at http://codex.wordpress.org/Template_Tags/wp_lis...

Reply

37 mac to ipod April 8, 2010 at 4:11 pm

Wordpress features includes a plugin architecture and a templating system. Used by over 2% of the 10,000 biggest websites, WordPress is the most popular blog software in use today. Thanks for providing related articles. Keep posting!

Reply

38 Michael May 25, 2010 at 3:10 pm

Thank you SO much for this!! I'm just at the beginning end of getting my website going, and this DEFINITELY helped me! I've bookmarked you so I can come back and make sure I'm getting this right. Michael – http://www.goofyfitnessdad.com

Reply

39 Scott Ellis May 25, 2010 at 3:23 pm

Michael, you bet. Love the site name!

Reply

40 dojazd do Kijowa May 30, 2010 at 2:34 pm

I often working with WP – thank you for this post

Reply

41 Kim Bolte June 5, 2010 at 5:56 pm

Hi Scott,

Thanks so much for this tutorial, it made the process very clear and easy to implement. Great tip about the numbering too. I would have done the 1. 2. 3. thing without having seen the video.

Kim

Reply

42 Scott Ellis June 7, 2010 at 6:34 pm

Kim, Thanks for letting me know, does me good to hear I've saved some people some work and headache!!!

Reply

43 Tom Slattery August 3, 2010 at 8:45 am

I am a coding novice, so please forgive this: I’m trying to enable this function so I can implement your numbering system. I looked up the reference for how to change the parameters for ‘wp_list’ and found this is edited in wp-includes/post-template.php (?)

I found this string in the file, but the syntax is different than in the examples they show:

function wp_list_pages($args = ”) {
$defaults = array(
‘depth’ => 0, ‘show_date’ => ”,
‘date_format’ => get_option(‘date_format’),
‘child_of’ => 0, ‘exclude’ => ”,
‘title_li’ => __(‘Pages’), ‘echo’ => 1,
‘authors’ => ”, ‘sort_column’ => ‘menu_order, post_title’,
‘link_before’ => ”, ‘link_after’ => ”, ‘walker’ => ”,
);

Thanks!
~TPS

Reply

44 Scott Ellis August 3, 2010 at 9:05 am

Tom, if you are modifying the core WordPress code stop now! In your template file (in your theme) where you want the content to show up you need to use the wp_list_page() function and pass in the appropriate parameters.

Example:
< ?php wp_list_pages('title_li=&sort_column=menu_order'); ?>

Read More:
http://codex.wordpress.org/Function_Reference/wp_list_pages

Reply

45 Tom Slattery August 3, 2010 at 10:28 am

After digging around the theme itself, I realized that it had the option right in it’s own control panel to order the pages by number, not alphabetically. Nonetheless, this was a good lesson in code.

Thanks for your help!
~TPS

Reply

Leave a Comment

{ 7 trackbacks }

Previous post:

Next post: