📁 File Manager Pro
v10.0.3 | PHP: 8.2.31
Server: LiteSpeed
2026-07-04 06:28:08
📂
/ (Root)
/
home
/
orkouolp
/
web
/
orkofarms.com
/
wp-content
/
themes
/
martfury
/
inc
/
mega-menu
📍 /home/orkouolp/web/orkofarms.com/wp-content/themes/martfury/inc/mega-menu
🔄 Refresh
✏️
Editing: class-menu-edit.php
Writable
<?php /** * Customize and add more fields for mega menu */ if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'Walker_Nav_Menu_Edit' ) ) { require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; } class Martfury_Mega_Menu_Walker_Edit extends Walker_Nav_Menu_Edit { /** * Start the element output. * * @see Walker_Nav_Menu::start_el() * @since 3.0.0 * * @global int $_wp_nav_menu_max_depth * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param array $args Not used. * @param int $id Not used. */ public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { $item_icon = get_post_meta( $item->ID, 'tamm_menu_item_icon', true ); $item_icon_type = get_post_meta( $item->ID, 'tamm_menu_item_icon_type', true ); $item_icon_svg = get_post_meta( $item->ID, 'tamm_menu_item_icon_svg', true ); $item_icon_color = get_post_meta( $item->ID, 'tamm_menu_item_icon_color', true ); $item_hide_text = get_post_meta( $item->ID, 'tamm_menu_item_hide_text', true ); $item_uppercase_text = get_post_meta( $item->ID, 'tamm_menu_item_uppercase_text', true ); $item_hot = get_post_meta( $item->ID, 'tamm_menu_item_hot', true ); $item_new = get_post_meta( $item->ID, 'tamm_menu_item_new', true ); $item_trending = get_post_meta( $item->ID, 'tamm_menu_item_trending', true ); $item_is_label = get_post_meta( $item->ID, 'tamm_menu_item_is_label', true ); $item_disable_link = get_post_meta( $item->ID, 'tamm_menu_item_disable_link', true ); $item_content = get_post_meta( $item->ID, 'tamm_menu_item_content', true ); $item_mega = get_post_meta( $item->ID, 'tamm_menu_item_mega', true ); $item_mega_style2 = get_post_meta( $item->ID, 'tamm_menu_item_mega_style2', true ); $item_mega_width = get_post_meta( $item->ID, 'tamm_menu_item_width', true ); $mega_width = get_post_meta( $item->ID, 'tamm_menu_item_mega_width', true ); $item_mega_background = wp_parse_args( get_post_meta( $item->ID, 'tamm_menu_item_background', true ), array( 'image' => '', 'color' => '', 'attachment' => 'scroll', 'size' => '', 'repeat' => 'no-repeat', 'position' => array( 'x' => 'left', 'y' => 'top', 'custom' => array( 'x' => '', 'y' => '', ) ) ) ); $item_output = ''; parent::start_el( $item_output, $item, $depth, $args ); $dom = new DOMDocument(); $dom->validateOnParse = true; $dom->loadHTML( mb_convert_encoding( $item_output, 'HTML-ENTITIES', 'UTF-8' ) ); $xpath = new DOMXPath( $dom ); // Remove spaces in href attribute $anchors = $xpath->query( "//a" ); foreach ( array_reverse( iterator_to_array( $anchors ) ) as $anchor ) { $anchor->setAttribute( 'href', trim( $anchor->getAttribute( 'href' ) ) ); } // Add more menu item data $settings = $xpath->query( "//*[@id='menu-item-settings-" . $item->ID . "']" )->item( 0 ); if ( $settings ) { $data = $dom->createElement( 'span' ); $data->setAttribute( 'class', 'hidden tamm-data' ); $data->setAttribute( 'data-mega', intval( $item_mega ) ); $data->setAttribute( 'data-mega-style2', intval( $item_mega_style2 ) ); $data->setAttribute( 'data-mega_width', esc_attr( $mega_width ) ); $data->setAttribute( 'data-width', esc_attr( $item_mega_width ) ); $data->setAttribute( 'data-background', json_encode( $item_mega_background ) ); $data->setAttribute( 'data-icon', esc_attr( $item_icon ) ); $data->setAttribute( 'data-icon_type', esc_attr( $item_icon_type ) ); $data->setAttribute( 'data-icon_color', esc_attr( $item_icon_color ) ); $data->setAttribute( 'data-hide-text', intval( $item_hide_text ) ); $data->setAttribute( 'data-uppercase-text', intval( $item_uppercase_text ) ); $data->setAttribute( 'data-hot', intval( $item_hot ) ); $data->setAttribute( 'data-new', intval( $item_new ) ); $data->setAttribute( 'data-trending', intval( $item_trending ) ); $data->setAttribute( 'data-disable-link', intval( $item_disable_link ) ); $data->setAttribute( 'data-is-label', intval( $item_is_label ) ); $data->nodeValue = $item_content; $settings->appendChild( $data ); $data = $dom->createDocumentFragment(); $item_icon_html = sprintf( '<span class="hidden tamm-data-svg">%s</span>', martfury_sanitize_svg( $item_icon_svg ) ); $data->appendXML( $item_icon_html ); $settings->appendChild( $data ); } // Add settings link $cancel = $xpath->query( "//*[@id='cancel-" . $item->ID . "']" )->item( 0 ); if ( $cancel ) { $link = $dom->createElement( 'a' ); $link->nodeValue = esc_html__( 'Settings', 'martfury' ); $link->setAttribute( 'class', 'item-config-mega opensettings submitcancel hide-if-no-js' ); $link->setAttribute( 'href', '#' ); $sep = $dom->createElement( 'span' ); $sep->nodeValue = ' | '; $sep->setAttribute( 'class', 'meta-sep hide-if-no-js' ); $cancel->parentNode->insertBefore( $link, $cancel ); $cancel->parentNode->insertBefore( $sep, $cancel ); } $output .= $dom->saveHTML(); } } class Martfury_Mega_Menu_Edit { /** * Martfury_Mega_Menu_Edit constructor. */ public function __construct() { add_action( 'admin_enqueue_scripts', array( $this, 'scripts' ) ); add_action( 'admin_footer-nav-menus.php', array( $this, 'modal' ) ); add_action( 'admin_footer-nav-menus.php', array( $this, 'templates' ) ); add_action( 'wp_ajax_tamm_save_menu_item_data', array( $this, 'save_menu_item_data' ) ); } /** * Load scripts on Menus page only * * @param string $hook */ public function scripts( $hook ) { if ( 'nav-menus.php' !== $hook ) { return; } wp_register_style( 'martfury-mega-font-ionicons', get_template_directory_uri() . '/css/ionicons.min.css', array(), '2.0' ); wp_register_style( 'martfury-mega-font-linearicons', get_template_directory_uri() . '/css/linearicons.min.css', array(), '1.0' ); wp_register_style( 'martfury-mega-menu', get_template_directory_uri() . '/inc/mega-menu/css/mega-menu.css', array( 'media-views', 'wp-color-picker', 'martfury-mega-font-ionicons', 'martfury-mega-font-linearicons' ), '20160530' ); wp_enqueue_style( 'martfury-mega-menu' ); wp_register_script( 'martfury-mega-menu', get_template_directory_uri() . '/inc/mega-menu/js/mega-menu.js', array( 'jquery', 'jquery-ui-resizable', 'wp-util', 'backbone', 'underscore', 'wp-color-picker' ), '20160530', true ); wp_enqueue_media(); wp_enqueue_script( 'martfury-mega-menu' ); } /** * Prints HTML of modal on footer */ public function modal() { ?> <div id="tamm-settings" tabindex="0" class="tamm-settings"> <div class="tamm-modal media-modal wp-core-ui"> <button type="button" class="button-link media-modal-close tamm-modal-close"> <span class="media-modal-icon"><span class="screen-reader-text"><?php esc_html_e( 'Close', 'martfury' ) ?></span></span> </button> <div class="media-modal-content"> <div class="tamm-frame-menu media-frame-menu"> <div class="tamm-menu media-menu"></div> </div> <div class="tamm-frame-title media-frame-title"></div> <div class="tamm-frame-content media-frame-content"> <div class="tamm-content"> <!-- <span class="spinner"></span>--> </div> </div> <div class="tamm-frame-toolbar media-frame-toolbar"> <div class="tamm-toolbar media-toolbar"> <div class="tamm-toolbar-primary media-toolbar-primary search-form"> <button type="button" class="button tamm-button tamm-button-save media-button button-primary button-large"><?php esc_html_e( 'Save Changes', 'martfury' ) ?></button> <button type="button" class="button tamm-button tamm-button-cancel media-button button-secondary button-large"><?php esc_html_e( 'Cancel', 'martfury' ) ?></button> <span class="spinner"></span> </div> </div> </div> </div> </div> <div class="media-modal-backdrop tamm-modal-backdrop"></div> </div> <?php } /** * Prints underscore template on footer */ public function templates() { $templates = apply_filters( 'tamm_js_templates', array( 'menus', 'title', 'mega', 'background', 'icon', 'content', 'general', 'general_2' ) ); foreach ( $templates as $template ) { $file = apply_filters( 'tamm_js_template_path', plugin_dir_path( __FILE__ ) . 'tmpl/' . $template . '.php', $template ); ?> <script type="text/template" id="tmpl-tamm-<?php echo esc_attr( $template ) ?>"> <?php if ( file_exists( $file ) ) { include $file; } ?> </script> <?php } } /** * Ajax function to save menu item data */ public function save_menu_item_data() { $_POST['data'] = stripslashes_deep( $_POST['data'] ); parse_str( $_POST['data'], $data ); $i = 0; // Save menu item data foreach ( $data['menu-item'] as $id => $meta ) { // Update meta value for checkboxes $keys = array_keys( $meta ); if ( $i == 0 ) { if ( in_array( 'mega', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_mega', true ); } else { delete_post_meta( $id, 'tamm_menu_item_mega' ); } if ( in_array( 'hideText', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_hide_text', true ); } else { delete_post_meta( $id, 'tamm_menu_item_hide_text' ); } if ( in_array( 'visibleText', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_visible_text', true ); } else { delete_post_meta( $id, 'tamm_menu_item_visible_text' ); } if ( in_array( 'hot', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_hot', true ); } else { delete_post_meta( $id, 'tamm_menu_item_hot' ); } if ( in_array( 'new', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_new', true ); } else { delete_post_meta( $id, 'tamm_menu_item_new' ); } if ( in_array( 'trending', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_trending', true ); } else { delete_post_meta( $id, 'tamm_menu_item_trending' ); } if ( in_array( 'isLabel', $keys ) ) { update_post_meta( $id, 'tamm_menu_item_is_label', true ); } else { delete_post_meta( $id, 'tamm_menu_item_is_label' ); } } foreach ( $meta as $key => $value ) { $key = str_replace( '-', '_', $key ); if( $key === 'tamm_menu_item_icon_svg' ) { $value = martfury_sanitize_svg($value); } update_post_meta( $id, 'tamm_menu_item_' . $key, $value ); } $i ++; } do_action( 'martfury_save_menu_item_data', $data ); wp_send_json_success( $data ); } }
💾 Save Changes
❌ Cancel