/** * Get the markup for an * svg sprite icon * * @param string $icon * @param array $options * * @return string */ public static function get_icon($icon, $options = array()) { if (is_array($icon) && isset($icon['icon'])) { $icon = $icon['icon']; } $attrs = array_merge(array('role' => 'img', 'class' => 'icon'), $options); $svg_use = MOZ_Html::get_element('use', array('xmlns:xlink' => 'http://www.w3.org/1999/xlink', 'xlink:href' => "#icon-{$icon}")); return MOZ_Html::get_element('svg', $attrs, $svg_use); }
/** * Get the markup for a * picture element * * @param int $image * @param string $base_size * @param array $sizes * @param array|null $attrs * @param array|null $flags * * @return bool|string */ public static function get_picture($image, $base_size, $sizes, $attrs = array(), $flags = array()) { if (!wp_attachment_is_image($image)) { return false; } $content = array(); // required for IE9 support... $content[] = '<!--[if IE 9]><video style="display: none;"><![endif]-->'; foreach (array_reverse($sizes) as $size => $query) { $src = wp_get_attachment_image_src($image, $size, false); $source_attrs = self::maybe_lazify($flags, array('srcset' => esc_attr($src[0]), 'media' => esc_attr($query), 'type' => esc_attr(get_post_mime_type($image))), false, false); $content[] = MOZ_Html::get_sc_element('source', $source_attrs); } $content[] = '<!--[if IE 9]></video><![endif]-->'; $base_src = wp_get_attachment_image_src($image, $base_size, false); $img_attrs = self::maybe_lazify($flags, array_merge(array('srcset' => esc_attr($base_src[0]), 'alt' => self::get_img_alt($image)), (array) $attrs)); $content[] = MOZ_Html::get_sc_element('img', $img_attrs); return MOZ_Html::get_element('picture', null, implode('', $content)); }
/** * Get an anchor tag * * @param array $data * @param array $attrs * @param string $content * * @return string */ public static function get_link($data = null, $attrs = array(), $content = '') { if (!empty($data) && ($href = self::get_link_href($data))) { $attrs['href'] = $href; } return MOZ_Html::get_element('a', self::add_link_target($attrs), $content); }
/** * Start the element output. * * @see Walker_Nav_Menu::start_el() * * @since 1.0 * * @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 object|array $args An array of arguments. @see wp_nav_menu() * @param int $id Current item ID. */ public function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { /// Menu Item Opening $item_classes = array('__item'); // add classes to current/parent/ancestor items if (isset($item->current) && $item->current) { $item_classes[] = '__item--current'; } if (isset($item->current_item_ancestor) && $item->current_item_ancestor) { $item_classes[] = '__item--ancestor'; } if (isset($item->current_item_parent) && $item->current_item_parent) { $item_classes[] = '__item--parent'; } if (isset($item->has_children) && $item->has_children) { $item_classes[] = '__item--has-children'; } // BEM-ify the given sub classes $item_classes_str = MOZ_BEM::get_bem($args->menu_class, $item_classes); if (isset($item->classes[0]) && !empty($item->classes[0])) { // the first item in the 'classes' array is the user-set class // the rest of the classes are superfluous $item_classes_str .= " {$item->classes[0]}"; } $output .= "<li class=\"{$item_classes_str}\">"; /// Menu Link $attrs = array_filter(array('title' => $item->attr_title, 'target' => $item->target, 'rel' => $item->xfn, 'href' => !empty($item->url) && '#' !== $item->url ? $item->url : '', 'class' => "{$args->menu_class}__link"), function ($attr) { // filter out the empty // attributes return !empty($attr); }); $tag = isset($attrs['href']) ? 'a' : 'span'; $link_content = $args->link_before . apply_filters('the_title', $item->title, $item->ID) . $args->link_after; $output .= $args->before; $output .= MOZ_Html::get_element($tag, $attrs, $link_content); $output .= $args->after; }