Upgrade wp_list_pages() to wp_nav_menu()
in Functions
as how-to, WordPress, wp_list_pages, wp_nav_menu
Following in the series dealing with upgrading to the wp_nav_menu() function in WordPress 3.0 from menus derived from the template tags: wp_page_menu(); wp_list_pages(); and, wp_list_categories(). This post will be covering the options involved in updating to wp_nav_menu() from wp_list_pages().
Like the last post in the series we will look at the default arguments used by each function, starting with wp_nav_menu() 1:
wp_nav_menu( array(
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => '',
'theme_location' => ''
) );
The following is a default “menu” version of wp_list_pages() 2, 3, often wrapped within a <ul class=”menu”> tag:
<ul class="menu">
<?php wp_list_pages( array(
'sort_column' => 'menu_order, post_title',
'include' => '',
'exclude' => '',
'exclude_tree' => '',
'child_of' => 0,
'show_date' => '',
'date_format' => get_option('date_format'),
'title_li' => __(''),
/* 'title_li' set to '' for menus from the default 'Pages' */
'authors' => '',
'echo' => 1,
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => ''
) ); ?>
</ul>
Here is the break-down of the wp_list_pages() default options from above:
'sort_column'– not used'include'– not used'exclude'– not used'exclude_tree'– not used'child_of'– not used'show_date'– not used'date_format'– not used'title_li'– not used, see below for additional notes'authors'– not used'echo'– similar to wp_nav_menu(); true versus 1 as value'link_before'– same as wp_nav_menu()'link_after'– same as wp_nav_menu()'depth'– same as wp_nav_menu()'walker'– same as wp_nav_menu()
Similar to wp_page_menu(), the ‘sort_column’, ‘include’, ‘exclude’, ‘exclude_tree’, and ‘child_of’ are replaced via the end-user’s specific choices. The ‘show_date’ and its related ‘date_format’ option, as well as the ‘author’ argument, are not available within the default wp_nav_menu() structure. Once again, the balance of the default options in wp_list_pages() matches the defaults found in wp_nav_menu().
Also consider setting the wp_nav_menu() fallback_cb option to 'fallback_cb' => 'wp_list_pages'. This backward compatibility may also be addressed with a custom function as posted by Nicolas Kuttler.
Note: If the 'title_li' => __('') option was being used it may also require the removal of the wrapping <ul> tag in the existing menu structure created with wp_list_pages().
Going Home
as bloginfo, get_bloginfo, WordPress, wp_list_categories, wp_list_pages, wp_page_menu
Creating text links back to the home page, or front page, of a blog are done in many ways. Many themes use the blog Title as a link back to the home page. It is also very common for the menu or navigation bar to link to the home page. This article will cover some examples of links for going home.
Let’s start with an obvious example: a link from the blog title back to the home page.
<a href="http://wpfirstaid.com/">WP First Aid</a>
The above example is very, very basic … let’s dress it up a bit:
<h1 class="blog-title"><a href="http://wpfirstaid.com/" alt="Going Home: WP First Aid">WP First Aid</a></h1>
Now we have a title using the h1 element and a CSS class of blog-title with some alt text letting the reader know where the link will be going. This is better but how does this help you? Let’s make use of WordPress’ built in functions to make this example more generic and easily transferable.
<h1 class="blog-title"><a href="<?php bloginfo('url'); ?>" alt="Going Home: <?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a></h1>
This example makes use of the WordPress function bloginfo(). Here is a link to the WordPress codex for this function; and, here is a link to the get_bloginfo() function which provides additional details.
Our next example is adding a home page link to a navigation bar. Many navigation bars are generated with one of three WordPress functions: wp_list_pages(), wp_page_menu(), or wp_list_categories(). The wp_page_menu function uses a value that creates a home page link, for example:
<?php wp_page_menu('show_home=1'); ?>
The wp_page_menu function includes all the available parameters of the wp_list_pages function and also includes wrapping the output in an unordered list.
To add a home page link into a theme using the wp_list_pages function you may look at the following example for guidance:
<ul>
<li><a href="<?php bloginfo('url'); ?>" alt="Going Home: <?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a></li>
<?php wp_list_pages(); ?>
</ul>
Adding a home page link to a navigation menu created with the wp_list_categories function is very similar. Let’s take a quick look at it below.
<ul>
<li><a href="<?php bloginfo('url'); ?>" alt="Going Home: <?php bloginfo('name'); ?>"><?php bloginfo('name'); ?></a></li>
<?php wp_list_categories(); ?>
</ul>
The only difference in the above two examples are the function call. The links we added to the home page are almost identical to the the link example we used for the blog title.
Feel free to use any of the above examples in your own works. Of course, there could be additional CSS elements needed to work with your theme’s style but I will leave that as an exercise for you … or feel free to contact us with more complex code requirements.





