Support Volgende » Algemene WordPress vragen Volgende » Menu balk maken per vereniging

  • Hallo,

    Ik ben opzoek naar de mogelijkheid om een menubalk te maken welke alleen getoond word als de pagina URL = /plaatselijke-zaken/hartvooracht
    Ik heb een menu gemaakt met de naam “hartvooracht”
    en bevat de pagina’s welke in het main menu getoond worden, maar jammer genoeg nergens anders
    Op de voorbeeld pagina heb ik zelf een oplossing gemaakt, handmatig
    maar als de stichting een extra pagina maakt, moet ik weer alles aanpassen
    ik wil andere verenigingen ook op deze manier een landings pagina geven met een eigen menu

    Wie weet raad?

    Hans KS

    De pagina waar ik hulp bij nodig heb: [log in om de link te zien]

1 reactie aan het bekijken (van in totaal 1)
  • Je zou hiervoor een custom nav walker kunnen gebruiken. Deze walker toont dan alleen de onderliggende pagina’s.

    Voeg deze code toe aan je functions.php bestand:

    
    class Theme_Walker_Secondary_Nav extends Walker_Nav_Menu {
    	private $active = false;
    
    	public function __construct() {
    		add_filter( 'wp_nav_menu', array( $this, 'nav_menu' ), 10, 2 );
    	}
    
    	public function nav_menu( $nav_menu, $args ) {
    		if ( $args->walker === $this ) {
    			$content = strip_tags( $nav_menu );
    
    			if ( empty( $content ) ) {
    				return '';
    			} else {
    				return $nav_menu;
    			}
    		}
    
    		return $nav_menu;
    	}
    
    	private function is_active( $depth ) {
    		return $depth > 0 && $this->active;
    	}
    
    	public function start_lvl( &$output, $depth = 0, $args = array() ) {
    		if ( $this->is_active( $depth ) ) {
    			parent::start_lvl( $output, $depth );
    		}
    	}
    
    	public function end_lvl( &$output, $depth = 0, $args = array() ) {
    		if ( $this->is_active( $depth ) ) {
    			parent::end_lvl( $output, $depth );
    		}
    	}
    
    	public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
    		if ( 0 === $depth ) {
    			$classes = array(
    				'current-menu-item',
    				'current-menu-parent',
    				'current-menu-parent',
    				'current-menu-ancestor',
    			);
    
    			do {
    				$class = array_shift( $classes );
    
    				$this->active = in_array( $class, $item->classes, true );
    			} while ( ! $this->active && ! empty( $classes ) );
    		}
    
    		if ( $this->is_active( $depth ) ) {
    			parent::start_el( $output, $item, $depth, $args );
    		}
    	}
    
    	public function end_el( &$output, $item, $depth = 0, $args = array() ) {
    		if ( $this->is_active( $depth ) ) {
    			parent::end_el( $output, $item, $depth, $args );
    		}
    	}
    }
    

    Roep het menu vervolgens zo aan:

    
    wp_nav_menu( array(
    'theme_location' => 'secondary',
    'walker'         => new Theme_Walker_Secondary_Nav(),
    ) );
    

    Het secundaire menu kan er vervolgens zo uit zien:

    – Eerste gemeente
    – Eerste item
    – Tweede item
    – Derde item
    – Tweede gemeente
    – Eerste item
    – Tweede item

    Als je de pagina ‘Tweede gemeente’ bezoekt wordt in dit geval alleen ‘eerste item’ en ‘tweede item’ getoond.

1 reactie aan het bekijken (van in totaal 1)