Current Path : /home/theafprt/conviviality360.com/wp-content/themes/salient/nectar/helpers/ |
Current File : /home/theafprt/conviviality360.com/wp-content/themes/salient/nectar/helpers/nav-menus.php |
<?php /** * Navigation menu related helper functions * * @package Salient WordPress Theme * @subpackage helpers * @version 9.0.2 */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Register theme menu locations. * * @since 1.0 */ if ( function_exists( 'register_nav_menus' ) ) { function nectar_add_theme_menu_locations() { global $nectar_options; $sideWidgetArea = ( ! empty( $nectar_options['header-slide-out-widget-area'] ) ) ? $nectar_options['header-slide-out-widget-area'] : 'off'; $usingPRCompatLayout = false; $usingTopLeftRightCompatLayout = false; if ( ! empty( $nectar_options['header_format'] ) && $nectar_options['header_format'] === 'menu-left-aligned' || $nectar_options['header_format'] === 'centered-menu' || $nectar_options['header_format'] === 'centered-logo-between-menu' ) { $usingPRCompatLayout = true; } if ( ! empty( $nectar_options['header_format'] ) && $nectar_options['header_format'] === 'centered-menu-bottom-bar' ) { $usingTopLeftRightCompatLayout = true; } if ( $sideWidgetArea == '1' ) { if ( $usingPRCompatLayout == true ) { $nectar_menu_arr = array( 'top_nav' => 'Top Navigation Menu', 'top_nav_pull_right' => 'Top Navigation Menu Pull Right', 'secondary_nav' => 'Secondary Navigation Menu', 'off_canvas_nav' => 'Off Canvas Navigation Menu', ); } elseif ( $usingTopLeftRightCompatLayout == true ) { $nectar_menu_arr = array( 'top_nav' => 'Top Navigation Menu', 'top_nav_pull_left' => 'Top Navigation Menu Pull Left', 'off_canvas_nav' => 'Off Canvas Navigation Menu', ); } else { $nectar_menu_arr = array( 'top_nav' => 'Top Navigation Menu', 'secondary_nav' => 'Secondary Navigation Menu', 'off_canvas_nav' => 'Off Canvas Navigation Menu', ); } } else { if ( $usingPRCompatLayout == true ) { $nectar_menu_arr = array( 'top_nav' => 'Top Navigation Menu', 'top_nav_pull_right' => 'Top Navigation Menu Pull Right', 'secondary_nav' => 'Secondary Navigation Menu', ); } elseif ( $usingTopLeftRightCompatLayout == true ) { $nectar_menu_arr = array( 'top_nav' => 'Top Navigation Menu', 'top_nav_pull_left' => 'Top Navigation Menu Pull Left', 'off_canvas_nav' => 'Off Canvas Navigation Menu', ); } else { $nectar_menu_arr = array( 'top_nav' => 'Top Navigation Menu', 'secondary_nav' => 'Secondary Navigation Menu', ); } } register_nav_menus( $nectar_menu_arr ); } add_action( 'after_setup_theme', 'nectar_add_theme_menu_locations' ); } /** * Walker for adding in dropdown arrows. * * @since 5.0 */ if ( ! function_exists( 'nectar_walker_nav_menu' ) ) { function nectar_walker_nav_menu() { class Nectar_Arrow_Walker_Nav_Menu extends Walker_Nav_Menu { function display_element( $element, &$children_elements, $max_depth, $depth = 0, $args, &$output ) { $id_field = $this->db_fields['id']; global $nectar_options; $theme_skin = ( ! empty( $nectar_options['theme-skin'] ) ) ? $nectar_options['theme-skin'] : 'original'; $header_format = ( ! empty( $nectar_options['header_format'] ) ) ? $nectar_options['header_format'] : 'default'; $dropdownArrows = ( ! empty( $nectar_options['header-dropdown-arrows'] ) && $header_format != 'left-header' ) ? $nectar_options['header-dropdown-arrows'] : 'inherit'; if ( $header_format === 'centered-menu-bottom-bar' ) { $theme_skin = 'material'; } if ( $theme_skin === 'material' ) { $theme_skin = 'ascend'; } $header_format = ( ! empty( $nectar_options['header_format'] ) ) ? $nectar_options['header_format'] : 'default'; // button styling $button_style = get_post_meta( $element->$id_field, 'menu-item-nectar-button-style', true ); if ( ! empty( $button_style ) ) { $element->classes[] = $button_style; } if ( ! empty( $children_elements[ $element->$id_field ] ) && $element->menu_item_parent == 0 && $theme_skin != 'ascend' && $header_format != 'left-header' && $dropdownArrows != 'dont_show' || ! empty( $children_elements[ $element->$id_field ] ) && $element->menu_item_parent == 0 && $dropdownArrows === 'show' ) { $element->title = $element->title . '<span class="sf-sub-indicator"><i class="fa fa-angle-down icon-in-menu"></i></span>'; $element->classes[] = 'sf-with-ul'; } if ( ! empty( $children_elements[ $element->$id_field ] ) && $element->menu_item_parent != 0 && $header_format != 'left-header' ) { $element->title = $element->title . '<span class="sf-sub-indicator"><i class="fa fa-angle-right icon-in-menu"></i></span>'; } if ( empty( $button_style ) && $header_format === 'left-header' ) { $element->title = '<span>' . $element->title . '</span>'; } Walker_Nav_Menu::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); } } } } nectar_walker_nav_menu(); /** * Add in description field into menu link output. * * @since 5.0 */ if ( ! function_exists( 'nectar_description_walker_nav_menu' ) ) { function nectar_description_walker_nav_menu( $item_output, $item, $depth, $args ) { if ( 'off_canvas_nav' === $args->theme_location && $item->description ) { $item_output = str_replace( $args->link_after . '</a>', $args->link_after . '</a><small class="nav_desc">' . wp_kses_post($item->description) . '</small>', $item_output ); } return $item_output; } } add_filter( 'walker_nav_menu_start_el', 'nectar_description_walker_nav_menu', 10, 4 ); /** * Menu item style. * * @since 5.0 */ if ( ! function_exists( 'nectar_nav_button_style' ) ) { function nectar_nav_button_style( $output, $item, $depth, $args ) { $item_id = $item->ID; $name = 'menu-item-nectar-button-style'; $value = get_post_meta( $item_id, $name, true ); ?> <p class="description description-wide"> <label for="<?php echo esc_attr( $name ) . '-' . esc_attr( $item_id ); ?>"> <?php echo __( 'Menu Item Style', 'salient' ); ?> <br /> <select id="<?php echo esc_attr( $name ) . '-' . esc_attr( $item_id ); ?>" class="widefat edit-menu-item-target" name="<?php echo esc_attr( $name ) . '[' . esc_attr( $item_id ) . ']'; ?>"> <option value="" <?php selected( $value, '' ); ?>><?php echo esc_html__( 'Standard', 'salient' ); ?> </option> <option value="button_solid_color" <?php selected( $value, 'button_solid_color' ); ?>><?php echo esc_html__( 'Button Accent Color', 'salient' ); ?> </option> <option value="button_solid_color_2" <?php selected( $value, 'button_solid_color_2' ); ?>><?php echo esc_html__( 'Button Extra Color #1', 'salient' ); ?> </option> <option value="button_bordered" <?php selected( $value, 'button_bordered' ); ?>><?php echo esc_html__( 'Button Bordered Accent Color', 'salient' ); ?> </option> <option value="button_bordered_2" <?php selected( $value, 'button_bordered_2' ); ?>><?php echo esc_html__( 'Button Bordered Extra Color #1', 'salient' ); ?> </option> </select> </label> </p> <?php } } add_action( 'wp_nav_menu_item_custom_fields', 'nectar_nav_button_style', 10, 4 ); $nectar_custom_menu_fields = array( 'menu-item-nectar-button-style' => '', ); /** * Menu item style update. * * @since 5.0 */ function nectar_nav_button_style_update( $menu_id, $menu_item_db_id, $menu_item_args ) { if( !function_exists('get_current_screen') ) { return; } $current_screen = get_current_screen(); // fix auto add new pages to top nav $on_post_type = ( $current_screen && isset( $current_screen->post_type ) && ! empty( $current_screen->post_type ) ) ? true : false; global $nectar_custom_menu_fields; if ( defined( 'DOING_AJAX' ) && DOING_AJAX || $on_post_type ) { return; } check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' ); foreach ( $nectar_custom_menu_fields as $key => $label ) { // Sanitize if ( ! empty( $_POST[ $key ][ $menu_item_db_id ] ) ) { // Do some checks here... $value = sanitize_text_field( $_POST[ $key ][ $menu_item_db_id ] ); } else { $value = null; } // Update if ( ! is_null( $value ) ) { update_post_meta( $menu_item_db_id, $key, $value ); } else { delete_post_meta( $menu_item_db_id, $key ); } } } add_action( 'wp_update_nav_menu_item', 'nectar_nav_button_style_update', 10, 3 );