registerActionHooks(); return $this; } /** * [registerActionHooks description] * @return [type] [description] */ public function registerActionHooks() { add_action('customize_register', array($this, 'customizer')); return $this; } /** * [customiser description] * @return [type] [description] */ public function customizer($wp_customize) { $this->registerCustomizerSettings('custom-header', $wp_customize); return; } public function registerCustomizerSettings($file_handle = '', $wp_customize) { require_once get_template_directory() . '/inc/custom-header/customizer/' . sanitize_title($file_handle) . '.php'; return $this; } public static function getContainerBeforeTag() { $html = '
'; $html .= '
'; $html .= ''; $html .= '
'; $html .= '
'; return $html; } public static function getMedia() { /** * register_default_headers default header images variables * @type Array */ global $_wp_default_headers; $headers = array(); $html = ''; $css = ''; /** * 'random-default-image' * 'random-uploaded-image' * 'remove-header' * 'http....' only one image */ $header_image_mod = get_theme_mod('header_image', ''); if (empty($header_image_mod) && !(is_home() || is_front_page())) return ''; // video active if (self::isVideoActive()) { // @todo implement video in later version } else { //ramdom header images //@see https://developer.wordpress.org/reference/functions/_get_random_header_data/ if ('random-uploaded-image' == $header_image_mod && leapin_is_pro()) { /** * @type Array */ $headers = get_uploaded_header_images(); } else if (preg_match("/^(?:http|https)/i", $header_image_mod)) { // one image /** * @type Object */ $headers = get_custom_header(); } elseif (!empty($_wp_default_headers)) { // register_default_headers registered and enabled to display $headers = $_wp_default_headers; } if (!empty($headers) && is_array($headers)) { // if (count($headers) > 0) { $html .= self::getContainerBeforeTag(); $i = 0; foreach ($headers as $header) { $img_url = self::getImgUrl((object)$header); $css .= "#wp-custom-header .card-$i .card__thumbnail::after{background-image: url($img_url);}"; $html .= "
  • "; $html .= self::getCustomHeaderWidgetHtml($i++); $html .= '
  • '; } //endforeach $html .= self::getContainerAfterTag(); // } } elseif (is_object($headers)) { $html .= self::getContainerBeforeTag(); $i = 0; $img_url = self::getImgUrl((object)$headers); $css .= "#wp-custom-header .card-$i .card__thumbnail::after{background-image: url($img_url);}"; $html .= "
  • "; $html .= self::getCustomHeaderWidgetHtml($i++); $html .= '
  • '; $html .= self::getContainerAfterTag(); } if (count($headers) === 1) { $css .= "#wp-custom-header .swiper-pagination{display: none;}"; } add_filter('leapin_load_css_on_each_pjax', function ($css_all) use ($css) { if (!leapin_is_pro()) { $css .= '#wp-custom-header .card__content { opacity: 0; transition: none;}'; $css .= '#wp-custom-header .swiper-slide-active .card__content { opacity: 1; transition: opacity .5s ease 1s;}'; } return $css_all . $css; }); } return $html; } public static function getImgUrl($header) { return $url = sprintf($header->url, get_template_directory_uri(), get_stylesheet_directory_uri()); } public static function getImgTag($header, $attr = array()) { $url = self::getImgUrl($header); if (property_exists($header, 'width')) { $width = absint($header->width); } if (property_exists($header, 'height')) { $height = absint($header->height); } if (!array_key_exists('alt', $attr)) { if (property_exists($header, 'alt_text')) { $alt_text = $header->alt_text; $attr['alt'] = $alt_text; } elseif (property_exists($header, 'description')) { $alt_text = $header->description; $attr['alt'] = $alt_text; } else { $attr['alt'] = ''; } } //@see https://developer.wordpress.org/reference/functions/get_header_image_tag/ $attr = wp_parse_args( $attr, array( 'src' => $url, 'width' => $width, 'height' => $height ) ); if (!empty($header->attachment_id)) { $image_meta = leapin_get_post_meta('_wp_attachment_metadata', $header->attachment_id); $size_array = array($width, $height); if (is_array($image_meta)) { $srcset = wp_calculate_image_srcset($size_array, $header->url, $image_meta, $header->attachment_id); $sizes = !empty($attr['sizes']) ? $attr['sizes'] : wp_calculate_image_sizes($size_array, $header->url, $image_meta, $header->attachment_id); if ($srcset && $sizes) { $attr['srcset'] = $srcset; $attr['sizes'] = $sizes; } } } $attr = array_map('esc_attr', $attr); $html = ' $value) { $html .= ' ' . $name . '="' . $value . '"'; } $html .= ' />'; return $html; } public static function isCarouselActive() { $headers = array(); $header_image_mod = get_theme_mod('header_image', ''); //@see https://developer.wordpress.org/reference/functions/_get_random_header_data/ if ('random-uploaded-image' == $header_image_mod && (is_home() || is_front_page())) { /** * @type Array */ $headers = get_uploaded_header_images(); } return count($headers) > 1 ? true : false; } public static function isVideoActive() { return is_header_video_active() && (has_header_video() || is_customize_preview()); } public static function getCustomHeaderWidgetHtml($i = 0) { $widgets = leapin_get_widget_data_for('on_custom_header_image'); $title = ''; $desc = ''; $link = ''; ob_start(); if (is_array($widgets) && array_key_exists($i, $widgets)) { $widget = $widgets[$i]; if (property_exists($widget, 'title') && !empty($widget->title)) { $title = '

    ' . $widget->title . '

    '; } if (property_exists($widget, 'desc') && !empty($widget->desc)) { $desc = '
    ' . $widget->desc . '
    '; } if (property_exists($widget, 'link') && !empty($widget->link) && property_exists($widget, 'url') && !empty($widget->url)) { $link = sprintf('', $widget->url, $widget->link); } ?>