now come the downside of the blog-software wordperss: Custom Menus.

Good: You can arrange Menu items through the backend (Dashboard -> Design -> Menu -> Create new Menu -> Add Links, Categories, Pages, Posts… whatever you want)

but to design-div-wise customize your menu you need 4x things:

1. have a menu designed in dashboard-backend.

2. register menus in functions.php

[cc lang=”php” escaped=”true” width=”600″]
register_nav_menus( array(
‘lang’ => __( ‘Sprachen’, ‘residium’ )
) );
[/cc]

3. a terribly complicated nav-walker-class definition in functions.php

[cc lang=”php” escaped=”true” width=”600″]

class wp_lang_navwalker extends Walker_Nav_Menu {

/**
* @see Walker::start_lvl()
* @since 3.0.0
*
* @param string $output Passed by reference. Used to append additional content.
* @param int $depth Depth of page. Used for padding.
*/
public function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat( “\t”, $depth );
$output .= “\n$indent

    \n”;
    }

    /**
    * @see Walker::start_el()
    * @since 3.0.0
    *
    * @param string $output Passed by reference. Used to append additional content.
    * @param object $item Menu item data object.
    * @param int $depth Depth of menu item. Used for padding.
    * @param int $current_page Menu item ID.
    * @param object $args
    */
    public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
    $indent = ( $depth ) ? str_repeat( “\t”, $depth ) : ”;

    /**
    * Dividers, Headers or Disabled
    * =============================
    * Determine whether the item is a Divider, Header, Disabled or regular
    * menu item. To prevent errors we use the strcasecmp() function to so a
    * comparison that is not case sensitive. The strcasecmp() function returns
    * a 0 if the strings are equal.
    */
    if ( strcasecmp( $item->attr_title, ‘divider’ ) == 0 && $depth === 1 ) {
    $output .= $indent . ‘

    ‘;
    $fb_output .= ‘

‘;

if ( $container )
$fb_output .= ‘‘;

echo $fb_output;
}
}
}

[/cc]

4. in your theme call the menu-creation-function:

[cc lang=”php” escaped=”true” width=”600″]

[/cc]

liked this article?

  • only together we can create a truly free world
  • plz support dwaves to keep it up & running!
  • (yes the info on the internet is (mostly) free but beer is still not free (still have to work on that))
  • really really hate advertisement
  • contribute: whenever a solution was found, blog about it for others to find!
  • talk about, recommend & link to this blog and articles
  • thanks to all who contribute!
admin