Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
immortalist
/
wp-content
/
themes
/
woodmart
/
inc
/
integrations
/
woocommerce
/
modules
/
sticky-navigation
:
class-main.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * Sticky navigation. * * @package woodmart */ namespace XTS\Modules\Sticky_Navigation; if ( ! defined( 'ABSPATH' ) ) { exit( 'No direct script access allowed' ); } use XTS\Admin\Modules\Options; use XTS\Modules\Mega_Menu_Walker; use XTS\Singleton; /** * Sticky navigation. * * @since 1.0.0 */ class Main extends Singleton { /** * Basic initialization class required for Module class. * * @since 1.0.0 */ public function init() { add_action( 'init', array( $this, 'add_options' ) ); add_action( 'wp_head', array( $this, 'enqueue_styles' ), 200 ); add_action( 'woodmart_after_body_open', array( $this, 'template' ), 600 ); add_filter( 'body_class', array( $this, 'body_class' ) ); add_filter( 'woodmart_localized_string_array', array( $this, 'add_localized_settings' ) ); } /** * Output sticky category navigation menu. * * @codeCoverageIgnore * @since 1.0.0 */ public function template() { if ( ! woodmart_get_opt( 'sticky_navigation_menu' ) || woodmart_is_maintenance_active() || wp_is_mobile() && woodmart_get_opt( 'mobile_optimization', 0 ) ) { return; } $title = woodmart_get_opt( 'sticky_navigation_title' ); if ( ! $title ) { $title = esc_html__( 'Menu', 'woodmart' ); } woodmart_enqueue_js_script( 'menu-sticky-offsets' ); woodmart_enqueue_js_script( 'menu-overlay' ); ?> <div class="wd-sticky-nav wd-hide-md"> <div class="wd-sticky-nav-title"> <span> <?php echo esc_html( $title ); ?> </span> </div> <?php wp_nav_menu( array( 'menu' => woodmart_get_opt( 'sticky_navigation_menu' ), 'menu_class' => 'menu wd-nav wd-nav-vertical wd-nav-sticky', 'container' => '', 'walker' => new Mega_Menu_Walker(), ) ); ?> <?php if ( woodmart_get_opt( 'sticky_navigation_area' ) || woodmart_get_opt( 'sticky_navigation_html_block' ) ) : ?> <div class="wd-sticky-nav-content wd-entry-content"> <?php if ( 'text' === woodmart_get_opt( 'sticky_navigation_content_type', 'text' ) ) : ?> <?php echo do_shortcode( woodmart_get_opt( 'sticky_navigation_area' ) ); ?> <?php else : ?> <?php echo woodmart_get_html_block( woodmart_get_opt( 'sticky_navigation_html_block' ) ); //phpcs:ignore ?> <?php endif; ?> </div> <?php endif; ?> </div> <?php } /** * Enqueue style. * * @return void */ public function enqueue_styles() { if ( ! woodmart_get_opt( 'sticky_navigation_menu' ) ) { return; } woodmart_enqueue_inline_style( 'mod-nav-vertical' ); woodmart_enqueue_inline_style( 'sticky-nav' ); } /** * Add options. * * @since 1.0.0 */ public function add_options() { Options::add_section( array( 'id' => 'sticky_navigation_section', 'name' => esc_html__( 'Sticky navigation', 'woodmart' ), 'parent' => 'general_parent_section', 'priority' => 80, 'icon' => 'xts-i-home', ) ); Options::add_field( array( 'id' => 'sticky_navigation_notice', 'type' => 'notice', 'style' => 'info', 'name' => '', 'content' => esc_html__( 'Before selecting the menu for the "Sticky navigation" option, make sure that images are uploaded. You can configure them via Appearance -> Menus.', 'woodmart' ), 'section' => 'sticky_navigation_section', 'priority' => 10, ) ); Options::add_field( array( 'id' => 'sticky_navigation_menu', 'type' => 'select', 'name' => esc_html__( 'Select menu', 'woodmart' ), 'hint' => '<video data-src="' . WOODMART_TOOLTIP_URL . 'sticky-navigation-menu.mp4" autoplay loop muted></video>', 'empty_option' => true, 'select2' => true, 'options' => $this->get_menus_array(), 'section' => 'sticky_navigation_section', 'tags' => esc_html__( 'Sticky navigation', 'woodmart' ), 'default' => '', 'priority' => 20, 'class' => 'xts-tooltip-bordered', ) ); Options::add_field( array( 'id' => 'sticky_navigation_title', 'name' => esc_html__( 'Title', 'woodmart' ), 'type' => 'text_input', 'section' => 'sticky_navigation_section', 'priority' => 25, 'description' => esc_html__( 'Specify your custom title or leave it empty to keep "Menu".', 'woodmart' ), ) ); Options::add_field( array( 'id' => 'sticky_navigation_content_type', 'name' => esc_html__( 'Bottom content', 'woodmart' ), 'hint' => '<video data-src="' . WOODMART_TOOLTIP_URL . 'sticky-navigation-content-type.mp4" autoplay loop muted></video>', 'type' => 'buttons', 'section' => 'sticky_navigation_section', 'options' => array( 'text' => array( 'name' => esc_html__( 'Text', 'woodmart' ), 'value' => 'text', ), 'html_block' => array( 'name' => esc_html__( 'HTML Block', 'woodmart' ), 'value' => 'html_block', ), ), 'default' => 'text', 'priority' => 30, 'class' => 'xts-html-block-switch xts-tooltip-bordered', ) ); Options::add_field( array( 'id' => 'sticky_navigation_area', 'type' => 'textarea', 'wysiwyg' => true, 'name' => esc_html__( 'Text', 'woodmart' ), 'default' => '', 'section' => 'sticky_navigation_section', 'tags' => 'prefooter', 'requires' => array( array( 'key' => 'sticky_navigation_content_type', 'compare' => 'equals', 'value' => 'text', ), ), 'priority' => 40, ) ); Options::add_field( array( 'id' => 'sticky_navigation_html_block', 'name' => esc_html__( 'HTML Block', 'woodmart' ), 'type' => 'select', 'section' => 'sticky_navigation_section', 'select2' => true, 'empty_option' => true, 'autocomplete' => array( 'type' => 'post', 'value' => 'cms_block', 'search' => 'woodmart_get_post_by_query_autocomplete', 'render' => 'woodmart_get_post_by_ids_autocomplete', ), 'requires' => array( array( 'key' => 'sticky_navigation_content_type', 'compare' => 'equals', 'value' => 'html_block', ), ), 'priority' => 40, ) ); } /** * Get all menus. * * @codeCoverageIgnore * @return array */ private function get_menus_array() { $output = array(); $menus = wp_get_nav_menus(); if ( ! $menus ) { return $output; } foreach ( $menus as $menu ) { $output[ $menu->slug ] = array( 'name' => $menu->name, 'value' => $menu->slug, ); } return $output; } /** * Added extra class for sticky navigation. * * @param array $classes Body class. * * @return array */ public function body_class( $classes ) { if ( ! woodmart_get_opt( 'sticky_navigation_menu' ) || woodmart_is_maintenance_active() || wp_is_mobile() && woodmart_get_opt( 'mobile_optimization', 0 ) ) { return $classes; } $classes[] = 'wd-sticky-nav-enabled'; return $classes; } /** * Add localized settings. * * @param array $settings Settings. * @return array */ public function add_localized_settings( $settings ) { if ( woodmart_get_opt( 'sticky_navigation_menu' ) ) { $settings['clear_menu_offsets_on_resize'] = apply_filters( 'wd_clear_menu_offsets_on_resize', true ) ? 'yes' : 'no'; } return $settings; } } Main::get_instance();