/** * Add icon to menu item title * * @since 0.1.0 * @since 0.9.0 Renamed the method to `add_icon()`. * @wp_hook filter the_title * @param string $title Menu item title. * @param int $id Menu item ID. * * @return string */ public static function _add_icon($title, $id) { $meta = Menu_Icons_Meta::get($id); $icon = self::get_icon($meta); if (empty($icon)) { return $title; } $title_class = !empty($meta['hide_label']) ? self::$hidden_label_class : ''; $title_wrapped = sprintf('<span%s>%s</span>', !empty($title_class) ? sprintf(' class="%s"', esc_attr($title_class)) : '', $title); if ('after' === $meta['position']) { $title_with_icon = "{$title_wrapped}{$icon}"; } else { $title_with_icon = "{$icon}{$title_wrapped}"; } /** * Allow plugins/themes to override menu item markup * * @since 0.8.0 * * @param string $title_with_icon Menu item markup after the icon is added. * @param integer $id Menu item ID. * @param array $meta Menu item metadata values. * @param string $title Original menu item title. * * @return string */ $title_with_icon = apply_filters('menu_icons_item_title', $title_with_icon, $id, $meta, $title); return $title_with_icon; }
/** * Print fields * * @since 0.1.0 * @access protected * @uses add_action() Calls 'menu_icons_before_fields' hook * @uses add_action() Calls 'menu_icons_after_fields' hook * @wp_hook action menu_item_custom_fields * * @param object $item Menu item data object. * @param int $depth Nav menu depth. * @param array $args Menu item args. * @param int $id Nav menu ID. * * @return string Form fields */ public static function _fields($id, $item, $depth, $args) { $input_id = sprintf('menu-icons-%d', $item->ID); $input_name = sprintf('menu-icons[%d]', $item->ID); $menu_settings = Menu_Icons_Settings::get_menu_settings(Menu_Icons_Settings::get_current_menu_id()); $meta = Menu_Icons_Meta::get($item->ID, $menu_settings); $fields = self::_get_menu_item_fields($meta); ?> <div class="field-icon description-wide menu-icons-wrap" data-id="<?php echo json_encode($item->ID); ?> "> <?php /** * Allow plugins/themes to inject HTML before menu icons' fields * * @param object $item Menu item data object. * @param int $depth Nav menu depth. * @param array $args Menu item args. * @param int $id Nav menu ID. * */ do_action('menu_icons_before_fields', $item, $depth, $args, $id); ?> <p class="description submitbox"> <label><?php esc_html_e('Icon:', 'menu-icons'); ?> </label> <?php printf('<a class="_select">%s</a>', esc_html__('Select', 'menu-icons')); ?> <?php printf('<a class="_remove submitdelete hidden">%s</a>', esc_html__('Remove', 'menu-icons')); ?> </p> <div class="_settings hidden"> <?php foreach ($fields as $field) { printf('<label>%1$s: <input type="text" name="%2$s" class="_mi-%3$s" value="%4$s" /></label><br />', esc_html($field['label']), esc_attr("{$input_name}[{$field['id']}]"), esc_attr($field['id']), esc_attr($field['value'])); } // The fields below will not be saved. They're only used for the preview. printf('<input type="hidden" class="_mi-url" value="%s" />', esc_attr($meta['url'])); ?> </div> <?php /** * Allow plugins/themes to inject HTML after menu icons' fields * * @param object $item Menu item data object. * @param int $depth Nav menu depth. * @param array $args Menu item args. * @param int $id Nav menu ID. * */ do_action('menu_icons_after_fields', $item, $depth, $args, $id); ?> </div> <?php }