First page of the how-to archive.

Upgrade wp_list_categories() to wp_nav_menu()

Posted by The Doctor on Jul 20, 2010 with 2 Comments | Short Link
in Functions
as , , ,

In this third installment in the upgrade to wp_nav_menu() series of posts, I will be dealing with moving from wp_list_categories() to wp_nav_menu().

Let’s start with the same basic outline and list the default options for each function. We will start with wp_nav_menu() 1 first:

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'    => ''
    ) );

We follow with wp_list_categories() 2, 3 which is often wrapped in a <ul class=”menu”> tag:

<ul class="menu">
wp_list_categories( array(
    'include'           => '',
    'exclude'           => '',
    'exclude_tree'      => '',
    'child_of'          => 0,
    'hide_empty'        => 1,
    'orderby'           => 'name',
    'order'             => 'ASC',
    'use_desc_for_title'=> 1,
    'number'            => NULL,
    'hierarchical'      => true,
    'show_count'        => 0,
    'pad_counts'        => 0,
    'style'             => 'list',
    /* 'style' set to list "creates list items for an unordered list" */
    'show_option_all'   => '',
    'show_option_none'  => __('No categories'),
    'show_last_update'  => 0,
    'feed'              => '',
    'feed_type'         => '',
    'feed_image'        => '',
    'current_category'  => 0,
    'taxonomy'          => 'category',
    'title_li'          => __( '' ),
    /* 'title_li' set to '' for menus from the default 'Categories' */
    'echo'              => 1,
    'depth'             => 0,
    'walker'            => 'Walker_Category'
    ) );
</ul>

Here is the break-down of the wp_list_categories() default options from above:

  • 'include' – not used
  • 'exclude' – not used
  • 'exclude_tree' – not used
  • 'child_of' – not used
  • 'hide_empty' – not used
  • 'orderby' – not used
  • 'order' – not used
  • 'use_desc_for_title' – not used
  • 'number' – not used
  • 'hierarchical' – not used
  • 'show_count' – not used
  • 'pad_counts' – not used
  • 'style' – not used
  • 'show_option_all' – not available
  • 'show_option_none' – not available
  • 'show_last_update' – not available
  • 'feed' – not available
  • 'feed_type' – not available
  • 'feed_image' – not available
  • 'current_category' – not available
  • 'taxonomy' – not available
  • 'title_li' – not used
  • 'echo' – similar to wp_nav_menu(); true versus 1 as value
  • 'depth' – same as wp_nav_menu()
  • 'walker' – see below for additional notes

Although there are great many options available to be used with wp_list_categoires() most are not used (as noted in the list above) in place of the user interface of wp_nav_menu() found under Appearance | Menu in the dashboard. The options that are marked as “not available” are currently not directly supported by wp_nav_menu() without the application of filters. The last few options remaining match up almost exactly with wp_page_nav() in a similar fashion as was shown with wp_list_pages().

Just like the wp_list_pages() consideration, the wp_nav_menu() fallback_cb option may be set to 'fallback_cb' => 'wp_list_categories'. This backward compatibility may also be addressed with a custom function as was noted, too.

Note: In most cases you would leave the wp_nav_menu() 'walker' option set to its default NULL although wp_list_categories() uses its own default walker class.

Upgrade wp_list_pages() to wp_nav_menu()

Posted by The Doctor on Jul 16, 2010 with 1 Comment | Short Link
in Functions
as , , ,

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().

Upgrade wp_page_menu() to wp_nav_menu()

Posted by The Doctor on Jul 12, 2010 with No Comments | Short Link
Last modified by The Doctor on July 25, 2010
in Functions
as , , ,

Upgrading from wp_page_menu() to wp_nav_menu() may be as easy as a simple find and replace operation.

Strike Through Text

Posted by The Doctor on Apr 15, 2010 with No Comments | Short Link
in Tips
as , , , ,

How to create a strike-through text effect with an HTML tag or CSS.

No Widget Area …

Posted by The Doctor on Jan 8, 2010 with 1 Comment | Short Link
Last modified by The Doctor on March 17, 2010
in Functions
as , , ,

Making a template tag for standard plugins using the built-in WordPress function the_widget().

Plugin Installation

Posted by The Doctor on Dec 30, 2009 with 1 Comment | Short Link
Last modified by The Doctor on March 17, 2010
in Tips
as , , , ,

Installing a WordPress plugin with step-by-step instructions and pictures.

dot-dot-dot

Posted by The Doctor on Nov 27, 2009 with No Comments | Short Link
Last modified by The Doctor on January 25, 2010
in Tips
as ,

How to show an ellipsis when the font-family does not … use the HTML entity reference, or the numeric character reference.