*/ class UsersWP_Menus { /** * Load new metabox for nav menu ui. * * @since 1.0.0 * @return void */ public function users_wp_admin_menu_metabox() { add_meta_box( 'add-users-wp-nav-menu', esc_html__( 'UsersWP Endpoints', 'userswp' ), array($this, 'users_wp_admin_do_wp_nav_menu_metabox'), 'nav-menus', 'side', 'default' ); add_action( 'admin_print_footer_scripts', array($this, 'users_wp_admin_wp_nav_menu_restrict_items') ); } /** * Build and populate the users_wp metabox into the menu manager ui. * * @since 1.0.0 * @return void */ public function users_wp_admin_do_wp_nav_menu_metabox() { global $nav_menu_selected_id; $walker = new UsersWP_Walker_Nav_Menu_Checklist( false ); $args = array( 'walker' => $walker ); $post_type_name = 'users_wp'; $tabs = array(); $tabs['common']['label'] = __( 'Common', 'userswp' ); $tabs['common']['pages'] = $this->users_wp_nav_menu_get_common_pages(); $tabs['loggedin']['label'] = __( 'Logged-In', 'userswp' ); $tabs['loggedin']['pages'] = $this->users_wp_nav_menu_get_loggedin_pages(); $tabs['loggedout']['label'] = __( 'Logged-Out', 'userswp' ); $tabs['loggedout']['pages'] = $this->users_wp_nav_menu_get_loggedout_pages(); ?>

users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items); return $page_args; } /** * Create a fake post object for the wp menu manager. * This function creates the list of Logged-In only pages, * for the admin menu manager. * * @since 1.0.0 * @return mixed A URL or an array of pages. */ public function users_wp_nav_menu_get_loggedin_pages() { $account_page_data = uwp_get_page_url_data('account_page', 'array'); $change_page_data = uwp_get_page_url_data('change_page', 'array'); $profile_page_data = uwp_get_page_url_data('profile_page', 'array'); $users_wp_menu_items = array(); if (!empty($account_page_data)) { $users_wp_menu_items['account'] = $account_page_data; } if (!empty($change_page_data)) { $users_wp_menu_items['change'] = $change_page_data; } if (!empty($profile_page_data)) { $users_wp_menu_items['profile'] = $profile_page_data; } $users_wp_menu_items['logout'] = array( 'name' => __( 'Log out', 'userswp' ), 'slug' => 'logout', 'link' => wp_login_url(), ); $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_loggedin_pages', $users_wp_menu_items ); $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items); return $page_args; } /** * Create a fake post object for the wp menu manager. * This function creates the list of Logged-Out only pages, * for the admin menu manager. * * @since 1.0.0 * @return mixed A URL or an array of pages. */ public function users_wp_nav_menu_get_loggedout_pages() { $register_page_data = uwp_get_page_url_data('register_page', 'array'); $login_page_data = uwp_get_page_url_data('login_page', 'array'); $forgot_page_data = uwp_get_page_url_data('forgot_page', 'array'); $users_wp_menu_items = array(); if (!empty($register_page_data)) { $users_wp_menu_items['register'] = $register_page_data; } if (!empty($login_page_data)) { $users_wp_menu_items['login'] = $login_page_data; } if (!empty($forgot_page_data)) { $users_wp_menu_items['forgot'] = $forgot_page_data; } $users_wp_menu_items = apply_filters( 'users_wp_nav_menu_get_loggedout_pages', $users_wp_menu_items ); $page_args = $this->users_wp_admin_wp_nav_menu_page_args($users_wp_menu_items); return $page_args; } /** * Restrict various items from view if editing a users_wp menu. * * @since 1.0.0 * @return void */ public function users_wp_admin_wp_nav_menu_restrict_items() { ?> $users_wp_item ) { $page_args[ $users_wp_item['slug'] ] = (object) array( 'ID' => -1, 'post_title' => $users_wp_item['name'], 'post_author' => 0, 'post_date' => 0, 'post_excerpt' => $users_wp_item['slug'], 'post_type' => 'page', 'post_status' => 'publish', 'comment_status' => 'closed', 'guid' => $users_wp_item['link'], 'lightbox_class' => "users-wp-$type-nav", ); } return $page_args; } /** * Add UsersWP setting page link to the WP admin bar. * * @since 1.1.2 * @return void */ public function admin_bar_menu($wp_admin_bar){ if ( !is_admin() && current_user_can( 'manage_options' ) ) { $wp_admin_bar->add_node( array( 'parent' => 'appearance', 'id' => 'userswp', 'title' => __( 'UsersWP', 'userswp' ), 'href' => admin_url( 'admin.php?page=userswp' ) ) ); } } /** * Returns endpoints for UWP menu in setup wizard. * * @since 1.2.0.13 * @return array */ public function get_endpoints() { $items = array(); $items['pages'] = array(); $loop_index = 999; $uwp_pages = array('users_page','profile_page','register_page','login_page','account_page','forgot_page','logout'); if( !empty( $uwp_pages) ) { foreach ( $uwp_pages as $page ) { if( !empty( $page ) && 'logout' != $page ) { $page_data = uwp_get_page_url_data($page, 'array'); } else{ $page_data = array( 'name' => __( 'Log out', 'userswp' ), 'slug' => 'logout', 'link' => wp_login_url(), ); } $page_class = !empty( $page ) ? str_replace('_page','',$page) : ''; $item = new stdClass(); $item->object = 'custom'; $item->menu_item_parent = 0; $item->type = 'custom'; $item->title = $page_data['name']; $item->url = $page_data['link']; $item->target = ''; $item->attr_title = ''; $item->classes = array("users-wp-menu users-wp-$page_class-nav"); $item->xfn = ''; $items['pages'][] = $item; } } return apply_filters( 'uwp_menu_items', $items,$loop_index ); } }