wp_nav_menu_items
Φιλτράρει τα στοιχεία λίστας ενός κλασικού μενού που τυπώνει η wp_nav_menu(). Για να προσθέσετε σύνδεσμο, π.χ. Σύνδεση ή Αποσύνδεση.
Πότε εκτελείται
Το WordPress εφαρμόζει το wp_nav_menu_items μέσα στη wp_nav_menu(), αφού φτιάξει τα στοιχεία ενός μενού και πριν τα τυλίξει στο . Παίρνετε τα στοιχεία ως ενιαία συμβολοσειρά HTML, μαζί με τα ορίσματα που έδωσε το θέμα.
Λειτουργεί μόνο με κλασικά μενού. Τα θέματα μπλοκ χρησιμοποιούν το μπλοκ Πλοήγησης, που δεν καλεί τη wp_nav_menu().
Παράμετροι
$itemsstring |
Το περιεχόμενο HTML της λίστας με τα στοιχεία του μενού. |
|---|---|
$argsstdClass |
Αντικείμενο με τα ορίσματα της wp_nav_menu(). |
Τι να επιστρέψετε
Τα στοιχεία του μενού ως συμβολοσειρά HTML.
Παράδειγμα: Σύνδεσμος Σύνδεση / Αποσύνδεση στο κύριο μενού
add_filter( 'wp_nav_menu_items', function ( $items, $args ) {
if ( 'primary' !== $args->theme_location ) {
return $items;
}
if ( is_user_logged_in() ) {
$url = wp_logout_url( home_url( '/' ) );
$label = __( 'Log out', 'my-snippets' );
} else {
$url = wp_login_url();
$label = __( 'Log in', 'my-snippets' );
}
$items .= sprintf(
'<li class="menu-item menu-item-login"><a href="%1$s">%2$s</a></li>',
esc_url( $url ),
esc_html( $label )
);
return $items;
}, 10, 2 );
Καλό να ξέρετε
- Ελέγξτε το $args->theme_location, ώστε να αλλάζετε μόνο το μενού που θέλετε. Τα ονόματα θέσεων διαφέρουν ανά θέμα· αναζητήστε τη register_nav_menus() στον κώδικα του θέματος.
- Για να στοχεύσετε ένα μενού με βάση το slug του, χρησιμοποιήστε το φίλτρο wp_nav_menu_{$menu->slug}_items.
- Αν δεν έχει οριστεί μενού στη θέση, εμφανίζεται η εναλλακτική του θέματος και αυτό το φίλτρο δεν εκτελείται.