Verfasste Forenbeiträge

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Thread-Ersteller vera1993

    (@vera1993)

    Zumindest habe ich versucht die Menüs zu registrieren und das Problem bleibt dasselbe…

    Mein Registrierungscode in der functions.php:

    function wbq_register_menus() {
      register_nav_menus(
        array(
          'new-menu',__( 'New Menu' ),
          'logged-out' => __( 'logged-out' ),
          'logged-in' => __( 'logged-in' ),
        )
      );
    }
    add_action( 'init', 'wbq_register_menus' );

    Einzige Idee, die ich jetzt noch habe ist den Code folgendermaßen zu ändern:

    ...
          'primary' => __( 'logged-out' ),
          'primary' => __( 'logged-in' ),
    ...

    Könnte das funktionieren?

    Thread-Ersteller vera1993

    (@vera1993)

    Hallo Bego Mario Garde,

    ja, ich habe die beiden Menüs unter Design > Menüs erstellt.
    Muss ich die Menüs etwa noch in der funtions.php registrieren?
    So wie ich es verstanden habe, muss das nicht sein, oder?

    Die Syntax vom php Code ist doch richtig soweit, oder nicht?

    Thread-Ersteller vera1993

    (@vera1993)

    Lieber Bego Mario Garde,

    das war tatsächlich sehr, sehr hilfreich! Vielen Dank für deine ausführliche Erklärung & Geduld. Besonders das war mir nicht klar:

    Wir rufen also für angemeldete Benutzer ein anderes Menü auf, in dem wir im Template angeben, dass an dieser Stelle eine andere Menü-Positon angezeigt werden soll (tatsächlich ändert sich nichts an der Position auf der Webseite, aber WordPress verwendet nun mal diese Ausdrücke um unterschiedliche „Menü-Platzhalter“ zu bezeichnen).

    Ich habe die header.php ab Zeile 92 entsprechend angepasst und die Namen der beiden Menüs für ein- und ausgeloggte User eingetragen:

    <?php			
    	if ( has_nav_menu( 'primary' ) ) {		
    			
    		if( is_user_logged_in() ) {	
    			$args = array( menu => 'logged-in' ); 
    		} else {	
    			$args = array( menu => 'logged-out' ); 
    		}	
    		wp_nav_menu( $args );
    			
    	} elseif ( ! has_nav_menu( 'expanded' ) ) {		
    			
    	wp_list_pages(		
    		array(	
    			'match_menu_classes' => true,
    			'show_sub_menu_icons' => true,
    			'title_li' => false,
    			'walker'   => new TwentyTwenty_Walker_Page(),
    		)	
    	);		
    			
    }			
    ?>			

    Wenn ich die Datei jetzt allerdings aktualisiere, wird mir die Hauptnavigation auf der Seite nicht mehr angezeigt, weder die für ein- noch für ausgeloggte User.

    Hast du eine Idee, woran das liegen könnte?
    Habe ich einen Fehler gemacht?

    Mit besten Grüßen
    Vera

    Thread-Ersteller vera1993

    (@vera1993)

    Hallo Bego Mario Garde,

    das mit deinem Code hatte ich erst falsch verstanden. Entschuldigung!

    Ich habe den Code der header.php jetzt an der entsprechenden Stelle angepasst:

    <?php
    	if ( has_nav_menu( 'primary' ) ) {
    
    	if( is_user_logged_in() ) { 
    	$args= array(
    		'container'  => '',
    		'items_wrap' => '%3$s',
    		'theme_location' => 'new_menu',
    	); 
    	} else {
    		$args= array(
    		'container'  => '',
    		'items_wrap' => '%3$s',
    		'theme_location' => 'primary',
    	}
    
    	wp_nav_menu( $args);
    
    } elseif ( ! has_nav_menu( 'expanded' ) ) {
    ...

    Wenn ich es richtig verstehe wird hierüber aber nur die Position der Hauptnavigation von „primary“ zu „new_menu“ verschoben.
    Ich möchte allerdings nicht die Location der Haputnavigation ändern, sondern den Inhalt, also das Menü logged-out mit dem Menu logged-in an der Position „primary“ tauschen.

    Kann man deine Funktion entsprechend anpassen?

    Thread-Ersteller vera1993

    (@vera1993)

    Hallo Bego Mario Garde,

    erstmal vielen Dank, dass Du versucht hast mir zu helfen und durch meine anscheinend nicht sehr gute Erklärung durchzusteigen.
    Ich glaube ich versuche es am besten noch einmal.

    Hier die URL der Seite: http://dgrw-online.de/wordpress/

    Auf der Seite habe ich zwei Menüs im Header integriert.
    Das erste Menü hat drei Punkte (Publikationen, Über uns, Anmelden)
    Das zweite Menü direkt darunter ist das Hauptmenü mit 6 Punkten.
    Das ist jetzt der Status, wenn ich die obige Funktion in der funtions.php deaktiviere.

    Der eigentliche Sinn der Funktion ist es einem eingeloggten User ein anderes Hauptmenü anzuzeigen als einem nicht eingeloggten User.
    Das hat auch alles funktioniert, bis ich das zweite Menü mit den drei Punkten hinzugefügt habe.

    Ab dem Zeitpunkt wurde für beide Menü-Positionen das Hauptmenü mit den 6 Punkten angezeigt. Ich denke das liegt daran, dass die Funktion mit $args[‚menu‘] nicht zwischen den Menü-Positionen unterscheidet und den Inhalt aller Menüs mit dem „Logged-in“ oder „logged-Out“ Menü füllt.

    Ich würde gerne wissen, wie ich den Code so anpasse, dass ich mit der Funktion eine konkrete Menü-Position anspreche, damit nur die Hauptnavigation angepasst wird.

    
    function my_wp_nav_menu_args( $args = '' ) {
     
    if( is_user_logged_in() ) { 
        $args['menu'] = 'logged-in';
    } else { 
        $args['menu'] = 'logged-out';
    } 
        return $args;
    }
    add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );

    Kann ich einfach in $args[‚menu‘] die entsprechende Menü-Position eintragen, die gemeint ist?

    Noch kurz zu den Benennungen:
    Menü-Namen:
    1) New Menü > Menü über dem Haputmenü (Theme Location: new-menu)
    2) logged-in > Haputmenü für eingeloggte User (Theme Location: primary)
    3) logged-out > Hauptmenü für ausgeloggte User (Theme Location: primary)

    Ich hoffe so ist es besser verständlich und Du kannst mir weiterhelfen.
    LG Vera

    PS: Hier auch noch der Original-Code zum Header-Menu (wenn es nicht sein muss, würde ich da ungern ran und das Problem lieber über die funktions.php lösen)
    Das zusätzliche Menü im Header füge ich über ein Header-Footer Plugin an der richtigen Stelle ein.

    <?php
    
    	$mobile_menu_location = '';
    
    	// If the mobile menu location is not set, use the primary and expanded locations as fallbacks, in that order.
    	if ( has_nav_menu( 'mobile' ) ) {
    		$mobile_menu_location = 'mobile';
    	} elseif ( has_nav_menu( 'primary' ) ) {
    		$mobile_menu_location = 'primary';
    	} elseif ( has_nav_menu( 'expanded' ) ) {
    		$mobile_menu_location = 'expanded';
    	}
    
    	if ( has_nav_menu( 'expanded' ) ) {
    
    		$expanded_nav_classes = '';
    
    		if ( 'expanded' === $mobile_menu_location ) {
    			$expanded_nav_classes .= ' mobile-menu';
    		}
    
    		?>
    
    		<nav class="expanded-menu<?php echo esc_attr( $expanded_nav_classes ); ?>" aria-label="<?php esc_attr_e( 'Expanded', 'twentytwenty' ); ?>" role="navigation">
    
    		<ul class="modal-menu reset-list-style">
    				<?php
    				if ( has_nav_menu( 'expanded' ) ) {
    					wp_nav_menu(
    						array(
    							'container'      => '',
    							'items_wrap'     => '%3$s',
    							'show_toggles'   => true,
    							'theme_location' => 'expanded',
    						)
    					);
    				}
    				?>
    			</ul>
    
    		</nav>
    
    		<?php
    	}
    
    	if ( 'expanded' !== $mobile_menu_location ) {
    		?>
    
    		<nav class="mobile-menu" aria-label="<?php esc_attr_e( 'Mobile', 'twentytwenty' ); ?>" role="navigation">
    
    			<ul class="modal-menu reset-list-style">
    
    			<?php
    			if ( $mobile_menu_location ) {
    
    				wp_nav_menu(
    					array(
    						'container'      => '',
    						'items_wrap'     => '%3$s',
    						'show_toggles'   => true,
    						'theme_location' => $mobile_menu_location,
    					)
    				);
    
    			} else {
    
    				wp_list_pages(
    					array(
    						'match_menu_classes' => true,
    						'show_toggles'       => true,
    						'title_li'           => false,
    						'walker'             => new TwentyTwenty_Walker_Page(),
    					)
    				);
    
    			}
    			?>
    
    			</ul>
    
    		</nav>
    
    		<?php
    	}
    	?>
    Thread-Ersteller vera1993

    (@vera1993)

    Das klingt tatsächlich noch viel besser als mein Plan mit der Datenbank! Im Idealfall soll das Ganze nämlich in WordPress pflegbar sein (das würde es zumindest deutlich einfacher machen).

    Vielen Dank für den Tipp!

    Gibt es irgendwo HowTos zum Erstellen dieser neuen Inhaltsarten? Oder hast du ein Stichwort, nach dem ich suchen kann?

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)