*/ 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__( 'Users WP', '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_page_data; } if (!empty($change_page_data)) { $users_wp_menu_items[] = $change_page_data; } if (!empty($profile_page_data)) { $users_wp_menu_items[] = $profile_page_data; } $users_wp_menu_items[] = 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_page_data; } if (!empty($login_page_data)) { $users_wp_menu_items[] = $login_page_data; } if (!empty($forgot_page_data)) { $users_wp_menu_items[] = $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() { ?> -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'] ); } return $page_args; } }