allow_pages_to_display(); // Post edit page $check_current_screen = $this->check_current_screen(); if( $check_current_screen == true && in_array( $typenow , $allow_pages ) ){ return true; } return false; } /** * Add meta box to posts/pages/custom post types */ function atm_register_meta_boxes(){ $result = $this->allow_posts_categories(); $allow_pages = $this->allow_pages_to_display(); if( $result == true ){ add_meta_box( 'atm-link', __( 'Add To Menus', 'atm' ), array( $this , 'atm_link_callback' ), $allow_pages , 'side' ); } } /** * Meta Box To post edit pages */ function atm_link_callback(){ ?>

Want a Pro Version ??

Just for $10

Download
$value ){ update_post_meta( $key , 'atm_access_level' , $value ); } } if( !empty( $_POST['atm_menu_roles'] ) ){ foreach( $_POST['atm_menu_roles'] as $keyMenuId => $rolesArray ){ if( !empty( $rolesArray ) ){ update_post_meta( $keyMenuId , 'atm_menu_roles' , $rolesArray ); } } } } /** * Added custom walker function */ function edit_nav_menu_walker( $walker ) { return 'Walker_Nav_Menu_Edit_ATM'; } /** * Included Walker class */ function admin_init_custom_menu(){ include_once( plugin_dir_path( __FILE__ ) . 'class.Walker_Nav_Menu_Edit.php'); } /** * Added access level custom field on the menu on the backend */ function custom_fields( $item_id, $item, $depth, $args ){ $access_level = get_post_meta( $item_id , 'atm_access_level' , true ); if( empty( $access_level ) || $access_level == 1 ){ $checked_all = 'checked="checked"'; } else { $checked_all = ''; } ?>
>

get_roles_menu( 'atm_menu_roles[' . $item_id . ']' , $item_id ); ?>

is_edit_page( 'edit' ) == true ){ wp_enqueue_style( 'atm-style', plugins_url( 'css/style.css', __FILE__ ) , array(), '1.0.0', false ); wp_enqueue_script( 'atm-script' , plugins_url( 'js/custom.js', __FILE__ ) , array() , '1.0.0' , false ); wp_enqueue_script( 'jquery-ui-dialog' ); wp_enqueue_style( 'wp-jquery-ui-dialog' ); } if( $hook == 'nav-menus.php' ){ wp_enqueue_script( 'atm-menu-script' , plugins_url( 'js/menu.js', __FILE__ ) , array() , '1.0.0' , false ); } } /** * Save menu by ajax */ function atm_save_menu(){ if( $_POST['action'] != 'atm_save_menu' ){ die; } $selected_menu = $_POST['parent_menu']; if( !empty( $selected_menu ) ){ foreach( $selected_menu as $key1 => $value ){ foreach( $value as $key => $parent_menu_id ){ if( $key != 'menu_id' ){ $selected_menu[$key1][$key]; $this->atm_update_nav_menu_items( $selected_menu[$key1]['menu_id'] , $_POST , $parent_menu_id ); } /** * Save menu as top menu */ if( $selected_menu[$key1]['menu_id'] == $parent_menu_id && is_numeric( $key ) ){ $this->atm_update_nav_menu_items( $selected_menu[$key1]['menu_id'] , $_POST , 0 ); } } } } echo 'success'; die; } /** * Add menus to the database */ function atm_update_nav_menu_items( $menu_id , $array , $parent_menu_id ){ $menu_title = sanitize_text_field( $array['title'] ); $menu_class = sanitize_text_field( $array['class'] ); $menu_title_attribute = sanitize_text_field( $array['title_attribute'] ); $menu_description = sanitize_text_field( $array['description'] ); $target = !empty( $array['target'] ) ? sanitize_text_field( $array['target'] ) : ''; $object_type = sanitize_text_field( $array['object_type'] ); $access_level = sanitize_text_field( $array['access_level'] ); $atm_roles = !empty( $array['roles'] ) ? $array['roles'] : ''; $open_target = ( $target == 1 ) ? '_blank' : ''; // Check for post or category switch ( $object_type ) { case 'post': $post = get_post( $array['post_id'] ); $object_id = $post->ID; $menu_item_object = $post->post_type; $item_type = 'post_type'; break; case 'category': $object_id = $array['post_id']; $cat = get_term( $object_id , '' , ARRAY_A ); $menu_item_object = $cat['taxonomy'] ; $item_type = 'taxonomy'; break; default: # code... break; } // Save new menu $new_post_id = wp_update_nav_menu_item( $menu_id, 0, array( 'menu-item-title' => $menu_title, 'menu-item-classes' => $menu_class, 'menu-item-attr-title' => $menu_title_attribute, 'menu-item-description' => $menu_description, 'menu-item-object' => $menu_item_object, 'menu-item-type' => $item_type, 'menu-item-object-id' => $object_id, 'menu-item-status' => 'publish', 'menu-item-parent-id' => $parent_menu_id, 'menu-item-position' => 0, 'menu-item-target' => $open_target, ) ); // Added access level update_post_meta( $new_post_id , 'atm_access_level', $access_level ); if( !empty( $atm_roles ) ){ update_post_meta( $new_post_id , 'atm_menu_roles', $atm_roles ); } } /** * Added icon on the admin bar */ function add_custom_scripts(){ $this->show_pro_version_message(); if( $this->check_current_screen() == true ){ $this->success_added_menu(); global $post; if( !empty( $post ) && is_object( $post ) ){ $title = $post->post_title; $object_type = 'post'; $object_id = $post->ID; } ?> get_names(); $availableRoles = get_post_meta( $item_id, 'atm_menu_roles' , true ); $count = 0; foreach( $roles as $key => $role ){ if( empty( $availableRoles ) /*&& $this->allow_posts_categories() == false*/ ){ // Show only on the menu manager page?> role_checked_default( $item_id , $key ); ?> false ) ); include 'custom_walker.php'; echo ''; } function get_current_language_menu( $value ){ global $wpdb; $tablecheck = "SELECT * FROM $wpdb->prefix" . 'icl_translations'; $check_table = $wpdb->get_row( $tablecheck ); if( empty( $check_table ) ){ return true; } elseif ( !class_exists('SitePress') ) { $language_code = 'en'; } else { $language_code = ICL_LANGUAGE_CODE; } global $wpdb; $table = $wpdb->prefix . 'icl_translations'; $results = $wpdb->get_results( "SELECT * FROM {$table} WHERE `language_code` = '" . $language_code . "' AND `element_type` = 'tax_nav_menu' AND `element_id` = {$value->term_id}" , ARRAY_A ); return ( !empty( $results ) ? true : false ); } /** * Get all registered menus */ function get_custom_menus( $object ){ echo ''; wp_nav_menu( array( 'menu_class' => 'nav-menu', 'menu' => $object->term_id, 'walker' => new ATM_Custom_Nav_Walker(), ) ); } /** * Get menu object */ function get_menu_object( $menu_name ){ $locations = get_nav_menu_locations(); $menu_id = $locations[ $menu_name ] ; $term = get_term_by( 'id', $menu_id , 'nav_menu'); return $term; } function show_pro_version_message(){ //make sure we are on the backend if (!is_admin()) return false; global $pagenow; global $post; $allow_pages = array( 'post' , 'page' ); $hide_on_allowed_pages = get_option( 'hide_on_allowed_pages' ); $hide_on_not_allowed_pages = get_option( 'hide_on_not_allowed_pages' ); $hide_on_taxonomies = get_option( 'hide_on_taxonomies' ); // Show on Add new post/page if( in_array( $pagenow, array( 'post-new.php' ) ) && in_array( $post->post_type , $allow_pages )){ if( $hide_on_allowed_pages == 'off' ){ return; } ?>

Add To Menus link will be visible after the post/page is saved. Hide this notice

post_type , $allow_pages ) ){ if( $hide_on_not_allowed_pages == 'off' ){ return; } ?>

Custom Post Types doesn't support in Add To Menus Lite Version. Upgrade to Pro Version Hide this notice

Taxonomies doesn't support in Add To Menus Lite Version. Upgrade to Pro Version Hide this notice

'success' ) ); die; } echo json_encode( array( 'result' => 'error' ) ); die; } /** * Check if the page is edit page * @return boolen */ function is_edit_page($new_edit = null){ //make sure we are on the backend if (!is_admin()) return false; global $pagenow; if($new_edit == "edit") return in_array( $pagenow, array( 'post.php', ) ); elseif($new_edit == "new") //check for new post page return in_array( $pagenow, array( 'post-new.php' ) ); else //check for either new or edit return in_array( $pagenow, array( 'post.php', 'post-new.php' ) ); } /** * Check for the edit page * @return boolen */ function check_current_screen(){ if( $this->is_edit_page( 'edit' ) == true ){ return true; } return false; } function allow_pages_to_display(){ $allow_pages = array( 'page' , 'post' ); return $allow_pages; } /** * Add menu to admin bar */ function add_to_menu_link( $wp_admin_bar ){ global $typenow; $allow_pages = $this->allow_pages_to_display(); // Post edit page $check_current_screen = $this->check_current_screen(); // category edit page //$check_category_page = $this->check_category_page(); if( $check_current_screen == true && in_array( $typenow , $allow_pages ) ){ $args = array( 'id' => 'atm_admin_bar', 'title' => 'Add To Menus', 'href' => '#', 'meta' => array( 'class' => 'atm_admin_bar', 'title' => 'Add To Menus' ) ); $wp_admin_bar->add_node( $args ); } } /** * Exclude menus on the frontend */ function exclude_menu_items( $items ) { $hide_children_of = array(); // Iterate over the items to search and destroy foreach ( $items as $key => $item ) { $visible = true; // hide any item that is the child of a hidden item if( in_array( $item->menu_item_parent, $hide_children_of ) ){ $visible = false; $hide_children_of[] = $item->ID; // for nested menus } $get_access_level = get_post_meta( $item->ID , 'atm_access_level' , true ); $get_menu_roles = get_post_meta( $item->ID , 'atm_menu_roles' , true ); // check any item that has NMR roles set if( $visible && !empty( $get_access_level ) ) { // check all logged in, all logged out, or role switch( $get_access_level ) { case '2' : if( is_user_logged_in() ){ $visible = false; if( !empty( $get_menu_roles ) ){ foreach( $get_menu_roles as $role ){ if( current_user_can( $role ) ){ $visible = true; } } } } else { $visible = false; } break; case '3' : $visible = ! is_user_logged_in() ? true : false; break; default: $visible = true; break; } } // add filter to work with plugins that don't use traditional roles $visible = apply_filters( 'atm_nav_menu_roles_item_visibility', $visible, $item ); // unset non-visible item if ( ! $visible ) { $hide_children_of[] = $item->ID; // store ID of item unset( $items[$key] ) ; } } return $items; } } $add_to_menus = new add_to_menus();