0, 'position' => 'before', 'align' => 'middle', 'size' => 1, 'icon' => '', 'color' => '', ); private function __construct() { add_action( 'admin_enqueue_scripts', array( $this, 'register_scripts' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'admin_init', array( $this, 'add_meta_box' ) ); add_filter( 'wp_setup_nav_menu_item', array( $this, 'setup_nav_menu_item_icon' ) ); add_filter( 'wp_edit_nav_menu_walker', array( $this, 'edit_nav_menu_walker' ), 99 ); add_action( 'wp_nav_menu_item_custom_fields', array( $this, 'nav_menu_item_custom_fields' ), 10, 4 ); add_action( 'wp_nav_menu_item_custom_title', array( $this, 'nav_menu_item_custom_title' ), 10, 4 ); add_action( 'wp_update_nav_menu_item', array( $this, 'update_nav_menu_item' ), 10, 3 ); Models_Libraries::instance(); } public function update_nav_menu_item( $menu_id, $menu_item_db_id, $menu_item_args ) { if ( ! wp_doing_ajax() ) { $menu_item_wpmi = array(); check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' ); if ( ! empty( $_POST['wpmi'][ $menu_item_db_id ] ) ) { $menu_item_wpmi['label'] = absint( $_POST['wpmi'][ $menu_item_db_id ]['label'] ); $menu_item_wpmi['position'] = sanitize_html_class( $_POST['wpmi'][ $menu_item_db_id ]['position'] ); $menu_item_wpmi['align'] = sanitize_html_class( $_POST['wpmi'][ $menu_item_db_id ]['align'] ); $menu_item_wpmi['size'] = sanitize_text_field( $_POST['wpmi'][ $menu_item_db_id ]['size'] ); $menu_item_wpmi['icon'] = esc_attr( $_POST['wpmi'][ $menu_item_db_id ]['icon'] ); $menu_item_wpmi['color'] = sanitize_text_field( $_POST['wpmi'][ $menu_item_db_id ]['color'] ); $this->edit_update_nav_menu_item( $menu_item_db_id, $menu_item_wpmi ); } if ( isset( $_POST['wpmi_font'] ) ) { $menu_font = sanitize_key( $_POST['wpmi_font'] ); if ( $menu_id > 0 ) { $models_navmenu = Models_Navmenu::instance(); $models_navmenu->save( $menu_id, $menu_font ); } } } } protected function edit_update_nav_menu_item( $id, $value ) { $value = apply_filters( 'wp_menu_icons_item_meta_values', $value, $id ); if ( ! empty( $value ) ) { update_post_meta( $id, WPMI_DB_KEY, $value ); } else { delete_post_meta( $id, WPMI_DB_KEY ); } } public function register_scripts() { $navmenu = include WPMI_PLUGIN_DIR . 'build/navmenu/js/index.asset.php'; $store = include WPMI_PLUGIN_DIR . 'build/store/js/index.asset.php'; wp_register_script( 'wpmi-store', plugins_url( '/build/store/js/index.js', WPMI_PLUGIN_FILE ), $store['dependencies'], $store['version'], true ); wp_register_script( 'wpmi-navmenu', plugins_url( '/build/navmenu/js/index.js', WPMI_PLUGIN_FILE ), $navmenu['dependencies'], $navmenu['version'], true ); wp_localize_script( 'wpmi-navmenu', 'wpmi_navmenu', array( 'WPMI_PREFIX' => WPMI_PREFIX, 'WPMI_PLUGIN_NAME' => WPMI_PLUGIN_NAME, 'WPMI_PREMIUM_SELL_URL' => 'https://quadlayers.com/products/wp-menu-icons/?utm_source=wpmi_plugin&utm_medium=admin_modal&utm_campaign=premium_upgrade&utm_content=premium_link', 'nonce' => wp_create_nonce( 'wpmi' ), ) ); wp_register_style( 'wpmi-navmenu', plugins_url( '/build/navmenu/css/style.css', WPMI_PLUGIN_FILE ), array( // 'wp-color-picker', 'media-views', 'wp-components', 'wp-editor', ), WPMI_PLUGIN_VERSION, 'all' ); } public function enqueue_scripts() { global $pagenow; if ( $pagenow != 'nav-menus.php' ) { return; } wp_enqueue_media(); wp_enqueue_style( 'wpmi-navmenu' ); wp_enqueue_script( 'wpmi-navmenu' ); } public function add_meta_box() { add_meta_box( WPMI_PREFIX . '_metabox', WPMI_PLUGIN_NAME, array( $this, 'metabox' ), 'nav-menus', 'side', 'high' ); } public function metabox() { ?>