-
-
Save tahmidbintaslim/e09b5d840b69ce1883e9a1c464868428 to your computer and use it in GitHub Desktop.
custom walker
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Custom Menu Walker - Special Walker classes that manipulate the menus. | |
* | |
* WordPress uses a special “Walker” class that iterates over each data record and then displays this | |
* record accordingly. The cool thing about that is that we can simply create our own custom walker extending | |
* that PHP class. That way we dont need to care about fetching the stuff from the database or preparing the | |
* data arrays. We only need to extend the part of the wordpress code that outputs the list. | |
* | |
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU | |
* General Public License version 2, as published by the Free Software Foundation. You may NOT assume | |
* that you can use any other version of the GPL. | |
* | |
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without | |
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
* | |
* @package CustomMenuWalker | |
* @version 0.1 | |
* @author Cristian Antohe <[email protected]> | |
* @copyright Copyright (c) 2008 - 2011, Cristian Antohe | |
* @link | |
* @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html | |
*/ | |
/** | |
* Custom Menu Walker class to output menu descriptions | |
* The walker now checks if a description is set, and if thats the case it wraps the description into | |
* a span tag and appends it to the navigation title. | |
* @since 0.1 | |
* @return string Output of the breadcrumb menu. | |
*/ | |
class description_walker extends Walker_Nav_Menu | |
{ | |
function start_el(&$output, $item, $depth, $args) | |
{ | |
global $wp_query; | |
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; | |
$class_names = $value = ''; | |
$classes = empty( $item->classes ) ? array() : (array) $item->classes; | |
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ); | |
$class_names = ' class="'. esc_attr( $class_names ) . '"'; | |
$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>'; | |
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; | |
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; | |
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; | |
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; | |
$prepend = '<strong>'; | |
$append = '</strong>'; | |
$description = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : ''; | |
if($depth != 0) | |
{ | |
$description = $append = $prepend = ""; | |
} | |
$item_output = $args->before; | |
$item_output .= '<a'. $attributes .'>'; | |
$item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append; | |
$item_output .= $description.$args->link_after; | |
$item_output .= '</a>'; | |
$item_output .= $args->after; | |
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); | |
} | |
} | |
/** | |
* Custom Menu Walker class to list children of the current menu item | |
* @since 0.1 | |
* @return string Output of the breadcrumb menu. | |
*/ | |
class current_children_only_walker extends Walker_Nav_Menu | |
{ | |
function start_el(&$output, $item, $depth, $args) | |
{ | |
global $wp_query; | |
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; | |
$class_names = $value = ''; | |
$classes = empty( $item->classes ) ? array() : (array) $item->classes; | |
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) ); | |
$class_names = ' class="'. esc_attr( $class_names ) . '"'; | |
$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>'; | |
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : ''; | |
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : ''; | |
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : ''; | |
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : ''; | |
$prepend = '<strong>'; | |
$append = '</strong>'; | |
$description = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : ''; | |
echo '<pre>'; | |
print_r($item); | |
echo '</pre>'; | |
echo '<div style="height:50px; background:#000; clear:both;"></div>'; | |
if (($depth != 0)){ | |
$item_output = $args->before; | |
$item_output .= '<a'. $attributes .'>'; | |
$item_output .= $args->link_before .apply_filters( 'the_title', $item->title, $item->ID ); | |
//$item_output .= $description.$args->link_after; | |
$item_output .= '</a>'; | |
$item_output .= $args->after; | |
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment