J'utilise le programme personnalisé suivant pour masquer les pages de connexion et d'enregistrement de mon menu de navigation créé avec wp_get_nav_menu_items .....
function wpse31748_exclude_menu_items( $items, $menu, $args ) {
// Iterate over the items to search and destroy
if ( is_user_logged_in() ) {
$registerpage = get_page_by_title( 'Register' );
$loginpage = get_page_by_title( 'Login' );
foreach ( $items as $key => $item ) {
if ( $item->object_id == $registerpage->ID ){
unset( $items[$key] );
}
elseif ( $item->object_id == $loginpage->ID ){
unset( $items[$key] );
}
else{}
}
return $items;
} else {
return $items;
}
}
add_filter( 'wp_get_nav_menu_items', 'wpse31748_exclude_menu_items', null, 3 );
Cela fonctionne bien, mais cela affecte également la page des menus dans le tableau de bord. Existe-t-il un moyen de limiter le robot d'exploration pour qu'il n'affecte que le front-end?
Vous pouvez essayer la !is_admin()
pour que votre code soit:
function wpse31748_exclude_menu_items( $items, $menu, $args ) {
// Iterate over the items to search and destroy
if ( !is_admin() && is_user_logged_in() ) {
$registerpage = get_page_by_title( 'Register' );
$loginpage = get_page_by_title( 'Login' );
foreach ( $items as $key => $item ) {
if ( $item->object_id == $registerpage->ID ){
unset( $items[$key] );
}elseif ( $item->object_id == $loginpage->ID ){
unset( $items[$key] );
}
}
}
return $items;
}
add_filter( 'wp_get_nav_menu_items', 'wpse31748_exclude_menu_items', null, 3 );