array('title' => __('User is logged in', 'avia_framework')), 'avia_is_user_logged_out' => array('title' => __('User is logged out', 'avia_framework')), 'avia_condition_admin' => array('title' => __('User is Admin', 'avia_framework')), 'avia_condition_editor' => array('title' => __('User is Editor', 'avia_framework')), 'avia_condition_subscriber' => array('title' => __('User is Subscriber', 'avia_framework')), 'avia_condition_author' => array('title' => __('User is Author', 'avia_framework')), 'avia_condition_contributor' => array('title' => __('User is Contributor', 'avia_framework')), 'is_front_page' => array('title' => __('Front Page', 'avia_framework')), 'is_single' => array('title' => __('Single Post', 'avia_framework'), 'supports_id' => true), 'is_page' => array('title' => __('Page', 'avia_framework'), 'supports_id' => true) ); $avia_config['menu_conditions'] = apply_filters('avf_avia_menu_conditions', $avia_config['menu_conditions']); } function get_menu_item_settings($item) { $conditional_logic = get_post_meta($item->ID, '_menu-item-avia-conditional', false); if(!empty($conditional_logic) && is_array($conditional_logic)) { $conditional_logic = $conditional_logic[0]; } else { $conditional_logic = array(); } return $conditional_logic; } function output_conditional_menu_options($output, $item, $depth, $args) { global $avia_config; if(!empty($avia_config['menu_conditions']) && is_array($avia_config['menu_conditions'])) { $item_id = $item->ID; $key = "menu-item-avia-conditional"; $value = $this->get_menu_item_settings($item); $value['enableconditionallogic'] = !empty($value['enableconditionallogic']) ? 'checked="checked"' : ''; if(empty($value['conditional'])) $value['conditional'] = ''; if(empty($value['conditionalid'])) $value['conditionalid'] = ''; if(empty($value['conditionalcss'])) $value['conditionalcss'] = ''; if(empty($value['conditionalvalue'])) $value['conditionalvalue'] = ''; ?>

$item) { $show = true; $conditional_logic = $this->get_menu_item_settings($item); /* check if parent item is hidden. If yes we must hide the submenu item too */ if(empty($conditional_logic['enableconditionallogic']) && !empty($hidden_items)) { if(in_array($item->menu_item_parent, $hidden_items)) $show = false; } if(!empty($conditional_logic['enableconditionallogic']) && !empty($avia_config['menu_conditions']) && is_array($avia_config['menu_conditions'])) { $condition_type = !empty($conditional_logic['conditional']) ? $conditional_logic['conditional'] : ''; $condition = !empty($conditional_logic['conditionalvalue']) ? $conditional_logic['conditionalvalue'] : ''; $conditionalid = !empty($conditional_logic['conditionalid']) ? $conditional_logic['conditionalid'] : ''; if(function_exists($condition)) { if(!empty($avia_config['menu_conditions'][$condition]['supports_id'])) { if($conditionalid) { $condition_result = call_user_func($condition, $conditionalid); } else { $condition_result = call_user_func($condition); } } else { $condition_result = call_user_func($condition); } if($condition_type == 'hide' && $condition_result) $show = false; if($condition_type == 'show' && !$condition_result) $show = false; if($condition_type == 'css' && $condition_result) { if(!empty($conditional_logic['conditionalcss'])) $item->classes[] = $conditional_logic['conditionalcss']; } } } if(!$show) { $hidden_items[] = $item->ID; unset($items[$key]); } } return $items; } } } new avia_conditional_mega_menu(); /* some predefined conditional functions */ if(!function_exists('avia_is_user_logged_out')) { function avia_is_user_logged_out() { if( !is_user_logged_in() ) return true; return false; } } if(!function_exists('avia_condition_admin')) { function avia_condition_admin() { global $current_user; if( is_user_logged_in() ) return in_array( 'administrator', $current_user->roles ); return false; } } if(!function_exists('avia_condition_editor')) { function avia_condition_editor() { global $current_user; if( is_user_logged_in() ) foreach( array( 'administrator', 'editor' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true; return false; } } if(!function_exists('avia_condition_author')) { function avia_condition_author() { global $current_user; if( is_user_logged_in() ) foreach( array( 'administrator', 'editor', 'author' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true; return false; } } if(!function_exists('avia_condition_contributor')) { function avia_condition_contributor() { global $current_user; if( is_user_logged_in() ) foreach( array( 'administrator', 'editor', 'author', 'contributor' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true; return false; } } if(!function_exists('avia_condition_subscriber')) { function avia_condition_subscriber() { global $current_user; if( is_user_logged_in() ) foreach( array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ) as $role ) if( in_array( $role, $current_user->roles ) ) return true; return false; } }