> Menus page for the login logout menu items * * @since 3.4.0 */ public function add_login_logout_metabox() { add_meta_box( 'add-login-logout', __( 'Log In / Log Out', 'admin-site-enhancements' ), array($this, 'add_login_logout_menu_items'), 'nav-menus', 'side', 'default' ); } /** * Add menu items for the login logout metabox * * @since 3.4.0 */ public function add_login_logout_menu_items() { // The ID of the currently selected menu global $nav_menu_selected_id; $menu_items = array( 'asenha-login' => array( 'title' => __( 'Log In', 'admin-site-enhancements' ), 'url' => '#asenha-login', 'classes' => array('asenha-login-menu-item'), ), 'asenha-logout' => array( 'title' => __( 'Log Out', 'admin-site-enhancements' ), 'url' => '#asenha-logout', 'classes' => array('asenha-logout-menu-item'), ), 'asenha-login-logout' => array( 'title' => __( 'Log In / Log Out', 'admin-site-enhancements' ), 'url' => '#asenha-login-logout', 'classes' => array('asenha-login-logout-menu-item'), ), ); $item_details = array( 'db_id' => 0, 'object' => 'asenha', 'object_id' => '', 'menu_item_parent' => 0, 'type' => 'custom', 'title' => '', 'url' => '', 'target' => '', 'attr_title' => '', 'classes' => array(), 'xfn' => '', ); $menu_items_object = array(); foreach ( $menu_items as $item_id => $details ) { $menu_items_object[$details['title']] = (object) $item_details; $menu_items_object[$details['title']]->object_id = $item_id; $menu_items_object[$details['title']]->title = $details['title']; $menu_items_object[$details['title']]->classes = $details['classes']; $menu_items_object[$details['title']]->url = $details['url']; } $walker = new Walker_Nav_Menu_Checklist(array()); ?> url ) && false !== strpos( $menu_item->url, 'asenha' ) ) { // Define login URL based on whether if ( array_key_exists( 'change_login_url', $options ) && $options['change_login_url'] ) { if ( array_key_exists( 'custom_login_slug', $options ) && !empty( $options['custom_login_slug'] ) ) { $login_page_url = get_site_url() . '/' . $options['custom_login_slug']; } } else { $login_page_url = wp_login_url(); } $logout_redirect_url = home_url(); switch ( $menu_item->url ) { case '#asenha-login': $menu_item->url = $login_page_url; break; case '#asenha-logout': $menu_item->url = wp_logout_url(); break; case '#asenha-login-logout': $login_text = __( 'Log In', 'admin-site-enhancements' ); $logout_text = __( 'Log Out', 'admin-site-enhancements' ); $menu_item->url = ( is_user_logged_in() ? wp_logout_url() : $login_page_url ); $menu_item->title = ( is_user_logged_in() ? $logout_text : $login_text ); break; } } return $menu_item; } /** * Conditionally remove login or logout menu item based on is_user_logged_in() * * @since 3.4.0 */ public function maybe_remove_login_or_logout_menu_item( $sorted_menu_items ) { foreach ( $sorted_menu_items as $menu => $item ) { $item_classes = $item->classes; // Maybe remove Log In menu item if ( in_array( 'asenha-login-menu-item', $item_classes ) ) { if ( is_user_logged_in() ) { unset($sorted_menu_items[$menu]); } } // Maybe remove Log Out menu item if ( in_array( 'asenha-logout-menu-item', $item_classes ) ) { if ( !is_user_logged_in() ) { unset($sorted_menu_items[$menu]); } } } return $sorted_menu_items; } }