Willkommen bei WordPress. Dies ist dein erster Beitrag. Bearbeite oder lösche ihn und beginne mit dem Schreiben!
Hallo Welt!
von raredesign | Dez 3, 2019 | Allgemein | 0 Kommentare
Cokiee Shell
Current Path : /var/www/web23/html/wp-content/themes/enfold/ |
Current File : //var/www/web23/html/wp-content/themes/enfold/functions-enfold.php |
<?php if( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly /* * The function within this file are theme specific: * they are used only by this theme and not by the Avia Framework in general */ if( ! function_exists( 'avia_preload_screen' ) ) { /** * wrap embeds into a proportion containing div * * @return string */ function avia_preload_screen() { $class = avia_get_option( 'preloader_transitions' ) != 'disabled' ? 'av-transition-enabled' : ''; $label = __( 'Loading', 'avia_framework' ); $logo = avia_get_option( 'preloader_logo' ); if( is_numeric( $logo ) ) { $logo = wp_get_attachment_image_src( $logo, 'full' ); $logo = is_array( $logo ) ? $logo[0] : ''; } if( $logo ) { $class .= ' av-transition-with-logo'; $logo = "<img class='av-preloading-logo' src='{$logo}' alt='{$label}' title='{$label}' />"; } $output = ''; $output .= "<div class='av-siteloader-wrap {$class}'>"; $output .= '<div class="av-siteloader-inner">'; $output .= '<div class="av-siteloader-cell">'; $output .= $logo; $output .= '<div class="av-siteloader">'; $output .= '<div class="av-siteloader-extra"></div>'; $output .= '</div>'; $output .= '</div>'; $output .= '</div>'; $output .= '</div>'; return $output; } } if( ! function_exists( 'avia_menu_item_filter' ) ) { /** * filter menu item urls * * @param object $item * @return type */ function avia_menu_item_filter ( $item ) { if( isset( $item->url ) && strpos( $item->url, '#DOMAIN' ) === 0 ) { $item->url = str_replace( '#DOMAIN', get_site_url(), $item->url ); } return $item; } add_filter( 'avf_menu_items', 'avia_menu_item_filter', 10 ); } if( ! function_exists( 'avia_maps_key_for_plugins' ) ) { /** * * @param string $url * @param string $handle * @return string */ function avia_maps_key_for_plugins ( $url, $handle ) { $key = get_option( 'gmap_api' ); if( ! $key ) { return $url; } if ( strpos( $url, 'maps.google.com/maps/api/js' ) !== false || strpos( $url, 'maps.googleapis.com/maps/api/js' ) !== false ) { // if no key, we can generate a new link with our key if ( strpos( $url, 'key=' ) === false ) { $url = av_google_maps::api_url( $key ); } } return $url; } add_filter( 'script_loader_src', 'avia_maps_key_for_plugins', 10, 2 ); } if( ! function_exists( 'avia_iframe_proportion_wrap' ) ) { /** * wrap embeds into a proportion containing div * * @param string $html * @param string $url * @param array $attr * @param int $post_ID * @return string */ function avia_iframe_proportion_wrap ( $html, $url, $attr, $post_ID ) { if( strpos($html, '<iframe' ) !== false ) { $html = "<div class='avia-iframe-wrap'>{$html}</div>"; } return $html; } add_filter( 'embed_oembed_html', 'avia_iframe_proportion_wrap', 10, 4 ); } /* AJAX SEARCH */ if( ! function_exists( 'avia_append_search_nav' ) ) { //first append search item to main menu add_filter( 'wp_nav_menu_items', 'avia_append_search_nav', 9997, 2 ); add_filter( 'avf_fallback_menu_items', 'avia_append_search_nav', 9997, 2 ); /** * * * @param string $items * @param array $args * @return string */ function avia_append_search_nav ( $items, $args ) { if( avia_get_option( 'header_searchicon', 'header_searchicon' ) != 'header_searchicon' ) { return $items; } if( avia_get_option( 'header_position', 'header_top' ) != 'header_top' ) { return $items; } if( ( is_object( $args ) && $args->theme_location == 'avia') || ( is_string( $args ) && $args = 'fallback_menu' ) ) { ob_start(); get_search_form(); $form = ob_get_clean(); $form = str_replace( '<form ', '<form role="search" ', $form ); $form = htmlspecialchars( $form ); /** * Avoid duplicate indexing or empty search page * * @since 4.5.3 * @param string $items * @param array $args * @return string */ $nofollow = apply_filters( 'avf_nav_search_icon_nofollow', 'rel="nofollow"', $items, $args ); $aria_label = __( 'Search', 'avia_framework' ); $aria_label = apply_filters( 'avf_nav_search_aria_label', $aria_label, $items, $args ); $items .= '<li id="menu-item-search" class="noMobile menu-item menu-item-search-dropdown menu-item-avia-special" role="menuitem">'; $items .= '<a aria-label="' . $aria_label . '" href="?s=" '. $nofollow . ' data-avia-search-tooltip="' . $form . '" ' . av_icon_string( 'search', false ) . '>'; $items .= '<span class="avia_hidden_link_text">' . __( 'Search', 'avia_framework' ) . '</span>'; $items .= '</a>'; $items .= '</li>'; } return $items; } } if( ! function_exists( 'avia_save_menu_location' ) ) { /** * Prepare a possible fix for menu plugins, that remove theme location from menu array to exchange the menus * * @global array $avia_config * @param array $args * @return array */ function avia_save_menu_location( $args ) { global $avia_config; $avia_config['current_menu_location_output'] = isset( $args['theme_location'] ) ? $args['theme_location'] : ''; return $args; } add_filter( 'wp_nav_menu_args', 'avia_save_menu_location', 1, 1 ); } if( ! function_exists( 'avia_append_burger_menu' ) ) { //first append search item to main menu add_filter( 'wp_nav_menu_items', 'avia_append_burger_menu', 9998, 2 ); add_filter( 'avf_fallback_menu_items', 'avia_append_burger_menu', 9998, 2 ); /** * Append the burger menu * * @param string $items * @param array $args * @return string */ function avia_append_burger_menu ( $items , $args ) { global $avia_config; $location = ( is_object( $args ) && isset( $args->theme_location ) ) ? $args->theme_location : ''; $original_location = isset( $avia_config['current_menu_location_output'] ) ? $avia_config['current_menu_location_output'] : ''; /** * Allow compatibility with plugins that change menu or third party plugins to manpulate the location * * @used_by Enfold config-menu-exchange\config.php 10 * @since 4.1.3 */ $location = apply_filters( 'avf_append_burger_menu_location', $location, $original_location, $items , $args ); if( ( is_object( $args ) && ( $location == 'avia' ) ) || ( is_string( $args ) && ( $args == 'fallback_menu' ) ) ) { $class = avia_get_option('burger_size'); $items .= '<li class="av-burger-menu-main menu-item-avia-special ' . $class . '"> <a href="#" aria-label="' . esc_attr( __( 'Menu', 'avia_framework' ) ) . '" aria-hidden="false"> <span class="av-hamburger av-hamburger--spin av-js-hamburger"> <span class="av-hamburger-box"> <span class="av-hamburger-inner"></span> <strong>' . __( 'Menu', 'avia_framework' ) . '</strong> </span> </span> <span class="avia_hidden_link_text">' . esc_html( __( 'Menu', 'avia_framework' ) ) . '</span> </a> </li>'; } return $items; } } if( ! function_exists( 'avia_is_burger_menu' ) ) { /** * * @return boolean */ function avia_is_burger_menu () { $burger_menu = false; if( avia_get_option( 'menu_display' ) !== 'burger_menu' ) { return $burger_menu; } if( avia_get_option( 'header_position' ) !== 'header_top' ) { return $burger_menu; } //if(avia_get_option('header_position') !== 'header_top') return $burger_menu; //if(strpos(avia_get_option('header_layout'), 'main_nav_header') === false) return $burger_menu; return true; } } if( ! function_exists( 'avia_ajax_search' ) ) { /** * Perform search and return result */ function avia_ajax_search() { unset( $_REQUEST['action'] ); if( empty( $_REQUEST['s'] ) ) { $_REQUEST['s'] = array_shift( array_values( $_REQUEST ) ); } if( empty( $_REQUEST['s'] ) ) { die(); } $defaults = array( 'numberposts' => 5, 'post_type' => 'any', 'post_status' => 'publish', 'post_password' => '', 'suppress_filters' => false, 'results_hide_fields' => '' ); /** * WP Filter for the contents of the search query variable * * @param string * @return string */ $_REQUEST['s'] = apply_filters( 'get_search_query', $_REQUEST['s'] ); $search_parameters = array_merge( $defaults, $_REQUEST ); if ( $search_parameters['results_hide_fields'] !== '' ) { $search_parameters['results_hide_fields'] = explode( ',', $_REQUEST['results_hide_fields'] ); } else { $search_parameters['results_hide_fields'] = array(); } /** * @used_by Avia_Custom_Pages 10 * @used_by config-woocommerce\config.php avia_woocommerce_ajax_search_params() 20 * * @param array * @return array */ $search_query = apply_filters( 'avf_ajax_search_query', http_build_query( $search_parameters ) ); /** * @used_by Avia_Relevanssi 10 * * @param string $function_name * @param array $search_query * @param array $search_parameters * @param array $defaults * @return string */ $query_function = apply_filters( 'avf_ajax_search_function', 'get_posts', $search_query, $search_parameters, $defaults ); $posts = ( ( $query_function == 'get_posts') || ! function_exists( $query_function ) ) ? get_posts( $search_query ) : $query_function( $search_query, $search_parameters, $defaults ); $search_messages = array( 'no_criteria_matched' => __( 'Sorry, no posts matched your criteria', 'avia_framework' ), 'another_search_term' => __( 'Please try another search term', 'avia_framework' ), 'time_format' => get_option( 'date_format' ), 'all_results_query' => http_build_query( $_REQUEST ), 'all_results_link' => home_url( '?' . http_build_query( $_REQUEST ) ), 'view_all_results' => __( 'View all results', 'avia_framework' ) ); $search_messages = apply_filters( 'avf_ajax_search_messages', $search_messages, $search_query ); if( empty( $posts ) ) { $output = '<span class="av_ajax_search_entry ajax_not_found">'; $output .= '<span class="av_ajax_search_image ' . av_icon_string( 'info' ) . '">'; $output .= '</span>'; $output .= '<span class="av_ajax_search_content">'; $output .= '<span class="av_ajax_search_title">'; $output .= $search_messages['no_criteria_matched']; $output .= '</span>'; $output .= '<span class="ajax_search_excerpt">'; $output .= $search_messages['another_search_term']; $output .= '</span>'; $output .= '</span>'; $output .= '</span>'; echo $output; die(); } //if we got posts resort them by post type $output = ''; $sorted = array(); $post_type_obj = array(); foreach( $posts as $post ) { $sorted[ $post->post_type][] = $post; if( empty( $post_type_obj[ $post->post_type ] ) ) { $post_type_obj[ $post->post_type ] = get_post_type_object( $post->post_type ); } } //now we got everything we need to preapre the output foreach( $sorted as $key => $post_type ) { // check if post titles are in the hidden fields list if ( ! in_array( 'post_titles', $search_parameters['results_hide_fields'] ) ) { if( isset( $post_type_obj[ $key ]->labels->name ) ) { $label = apply_filters( 'avf_ajax_search_label_names', $post_type_obj[ $key ]->labels->name ); $output .= "<h4>{$label}</h4>"; } else { $output .= '<hr />'; } } foreach( $post_type as $post ) { $image = ''; $extra_class = ''; // check if image is in the hidden fields list if ( ! in_array( 'image', $search_parameters['results_hide_fields'] ) ) { $image = get_the_post_thumbnail( $post->ID, 'thumbnail' ); $extra_class = $image ? 'with_image' : ''; $post_type = $image ? '' : ( get_post_format( $post->ID ) != '' ? get_post_format( $post->ID ) : 'standard' ); $iconfont = $image ? '' : av_icon_string( $post_type ); } $excerpt = ''; // check if post meta fields are in the hidden fields list if ( ! in_array( 'meta', $search_parameters['results_hide_fields'] ) ) { if( ! empty( $post->post_excerpt ) ) { /** * * @since ??? * @since 4.8.5.1 added $post * @param string $excerpt * @param WP_Post $post * @return string */ $excerpt = apply_filters( 'avf_ajax_search_excerpt', avia_backend_truncate( $post->post_excerpt, 70, ' ', '...', true, '', true ), $post ); } else { /** * * @since ??? * @param string $excerpt * @param WP_Post $post * @return string */ $excerpt = apply_filters( 'avf_ajax_search_no_excerpt', get_the_time( $search_messages['time_format'], $post->ID ), $post ); } } $link = apply_filters( 'av_custom_url', get_permalink( $post->ID ), $post ); $output .= "<a class ='av_ajax_search_entry {$extra_class}' href='{$link}'>"; if ( $image !== '' || $iconfont ) { $output .= "<span class='av_ajax_search_image' {$iconfont}>"; $output .= $image; $output .= '</span>'; } $output .= '<span class="av_ajax_search_content">'; $output .= '<span class="av_ajax_search_title">'; $output .= get_the_title($post->ID); $output .= '</span>'; if( $excerpt !== '' ) { $output .= '<span class="ajax_search_excerpt">'; $output .= $excerpt; $output .= '</span>'; } $output .= '</span>'; $output .= '</a>'; } } $output .= "<a class='av_ajax_search_entry av_ajax_search_entry_view_all' href='{$search_messages['all_results_link']}'>"; $output .= $search_messages['view_all_results']; $output .= '</a>'; echo $output; die(); } // now hook into wordpress ajax function to catch any ajax requests add_action( 'wp_ajax_avia_ajax_search', 'avia_ajax_search' ); add_action( 'wp_ajax_nopriv_avia_ajax_search', 'avia_ajax_search' ); } if( ! function_exists( 'avia_social_widget_icon' ) ) { /** * Modify twitter social count widget and add social icons as iconfont * * @param string $content * @param string $icon * @return string */ function avia_social_widget_icon( $content, $icon ) { $content = '<span class="social_widget_icon" ' . av_icon_string( $icon ) . '></span>' . $content; return $content; } add_filter( 'avf_social_widget', 'avia_social_widget_icon', 2, 2 ); } //call functions for the theme add_filter( 'the_content_more_link', 'avia_remove_more_jump_link' ); add_post_type_support( 'page', 'excerpt' ); if( ! function_exists( 'avia_upload_mimes' ) ) { /** * allow additional file type uploads * * @param array $mimes * @return array */ function avia_upload_mimes( $mimes ) { return array_merge( $mimes, array( 'mp4' => 'video/mp4', 'ogv' => 'video/ogg', 'webm' => 'video/webm', 'txt' => 'text/plain' ) ); } add_filter( 'upload_mimes', 'avia_upload_mimes' ); } if( ! function_exists( 'avia_set_thumb_size' ) ) { /** * change default thumbnail size and fullwidth size on theme activation */ function avia_set_thumb_size() { update_option( 'thumbnail_size_h', 80 ); update_option( 'thumbnail_size_w', 80 ); update_option( 'large_size_w', 1030 ); update_option( 'large_size_h', 1030 ); } add_action( 'avia_backend_theme_activation', 'avia_set_thumb_size' ); } //add support for post thumbnails add_theme_support( 'post-thumbnails' ); if( ! function_exists( 'avia_title' ) ) { /** * advanced title + breadcrumb function * * @param array|string|false $args * @param int|false $id * @return string */ function avia_title( $args = false, $id = false ) { global $avia_config; if( ! $id ) { $id = avia_get_the_id(); } $header_settings = avia_header_setting(); if( $header_settings['header_title_bar'] == 'hidden_title_bar' ) { return ''; } $defaults = array( 'title' => get_the_title( $id ), 'subtitle' => '', //avia_post_meta($id, 'subtitle'), 'link' => get_permalink( $id ), 'html' => "<div class='{class} title_container'><div class='container'>{heading_html}{additions}</div></div>", 'heading_html' => "<{heading} class='main-title entry-title {heading_class}'>{title}</{heading}>", 'class' => 'stretch_full container_wrap alternate_color ' . avia_is_dark_bg( 'alternate_color', true ), 'breadcrumb' => true, 'additions' => '', 'heading' => 'h1', //headings are set based on this article: http://yoast.com/blog-headings-structure/ 'heading_class' => '' ); if ( is_tax() || is_category() || is_tag() ) { global $wp_query; $term = $wp_query->get_queried_object(); $defaults['link'] = get_term_link( $term ); } else if( is_archive() ) { $defaults['link'] = ''; } // Parse incomming $args into an array and merge it with $defaults $args = wp_parse_args( $args, $defaults ); /** * @used_by config-woocommerce\config.php avia_title_args_woopage() 10 * @since < 4.0 * @return array */ $args = apply_filters( 'avf_title_args', $args, $id ); //disable breadcrumb if requested if( $header_settings['header_title_bar'] == 'title_bar' ) { $args['breadcrumb'] = false; } //disable title if requested if( $header_settings['header_title_bar'] == 'breadcrumbs_only' ) { $args['title'] = ''; } // OPTIONAL: Declare each item in $args as its own variable i.e. $type, $before. extract( $args, EXTR_SKIP ); if( empty( $title ) ) { $class .= ' empty_title '; } $markup = avia_markup_helper( array( 'context' => 'avia_title', 'echo' => false ) ); if( ! empty( $link ) && ! empty( $title ) ) { $title = "<a href='" . $link . "' rel='bookmark' title='" . __( 'Permanent Link:', 'avia_framework' ) . " " . esc_attr( $title ) . "' $markup>" . $title . "</a>"; } if( ! empty( $subtitle ) ) { $additions .= "<div class='title_meta meta-color'>" . wpautop( $subtitle ) . '</div>'; } if( $breadcrumb ) { $additions .= Avia_Breadcrumb_Trail()->get_trail( array( 'separator' => '/', 'richsnippet' => true ) ); } if( ! $title ) { $heading_html = ''; } $html = str_replace( '{heading_html}', $heading_html, $html ); $html = str_replace( '{class}', $class, $html ); $html = str_replace( '{title}', $title, $html ); $html = str_replace( '{additions}', $additions, $html ); $html = str_replace( '{heading}', $heading, $html ); $html = str_replace( '{heading_class}', $heading_class, $html ); // removed 4.9 avia_is_dynamic_template() // if( ! empty( $avia_config['slide_output'] ) && ! avia_is_dynamic_template( $id ) && ! avia_is_overview() ) if( ! empty( $avia_config['slide_output'] ) && ! avia_is_overview() ) { $avia_config['small_title'] = $title; } else { return $html; } } } if( ! function_exists( 'avia_wp_get_the_title' ) ) { /** * Retrieve post title. * * This is a wrapper function for backwards comp. because Enfold did not always use WP function get_the_title() to get post title. * To avoid breaking older sites that rely on unfiltered post title we add a filter here and return unfiltered post title. * * @since 4.7.3.1 * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post. * @return string */ function avia_wp_get_the_title( $post = 0 ) { $post = get_post( $post ); if( ! $post instanceof WP_Post ) { return ''; } /** * Filter might be removed in oncoming versions * * @since 4.7.3.1 * @param boolean * @param WP_Post $post * @return boolean */ $supress = apply_filters( 'avf_legacy_suppress_wp_filter_post_title', false, $post ); if( false !== $supress ) { return $post->post_title; } return get_the_title( $post ); } } if( ! function_exists( 'avia_post_nav' ) ) { /** * Add navigation link elements for single post pages * * @since < 4.0 * @param boolean $same_category * @param string $taxonomy * @return string */ function avia_post_nav( $same_category = false, $taxonomy = 'category' ) { global $post, $wp_version; /** * Create a settings array to allow filtering and change behaviour */ $settings = array(); $settings['disable_post_nav_option'] = avia_get_option( 'disable_post_nav' ); $settings['skip_output'] = ! is_singular() || 'disable_post_nav' == $settings['disable_post_nav_option']; $settings['loop_post_nav'] = 'loop_post_nav' == $settings['disable_post_nav_option']; $settings['same_category'] = $same_category; $settings['excluded_terms'] = ''; $settings['wpversion'] = $wp_version; $settings['type'] = get_post_type(); $settings['taxonomy'] = ( $settings['type'] == 'portfolio' ) ? 'portfolio_entries' : $taxonomy; /** * Don't display if a fullscreen slider is available since they overlap */ $settings['is_fullwidth'] = false; if( ( class_exists( 'avia_sc_layerslider' ) && ! empty( avia_sc_layerslider::$slide_count ) ) || ( class_exists( 'avia_sc_slider_full' ) && ! empty( avia_sc_slider_full::$slide_count ) ) ) { $settings['is_fullwidth'] = true; } $settings['is_hierarchical'] = is_post_type_hierarchical( $settings['type'] ); /** * Check if we need to skip output */ if( ! $settings['skip_output'] ) { $settings['skip_output'] = $settings['is_hierarchical'] || $settings['is_fullwidth']; } /** * Backwards compatibility - next 2 lines will be removed in a future version */ $settings = apply_filters_deprecated( 'avia_post_nav_settings', array( $settings ), '4.5.6', 'avf_post_nav_settings', __( 'Return values handling has changed', 'avia_framework' ) ); $settings['skip_output'] = $settings['skip_output'] || ! empty( $settings['is_hierarchical'] ) || ! empty( $settings['is_fullwidth'] ); /** * $settings['skip_output'] = true if you want to skip output * $settings['same_category'] = true|false * $settings['excluded_terms'] = array|comma speerated string of id's * * @used_by config-bbpress\config.php avia_bbpress_avf_post_nav_settings 10 * @since 4.5.6 * @return array */ $settings = apply_filters( 'avf_post_nav_settings', $settings ); if( true === $settings['skip_output'] ) { return ''; } if( version_compare( $settings['wpversion'], '3.8', '>=' ) ) { $entries['prev'] = get_previous_post( $settings['same_category'], $settings['excluded_terms'], $settings['taxonomy'] ); $entries['next'] = get_next_post( $settings['same_category'], $settings['excluded_terms'], $settings['taxonomy'] ); } else { $entries['prev'] = get_previous_post( $settings['same_category'] ); $entries['next'] = get_next_post( $settings['same_category'] ); } $queried_entries = $entries; if( true === $settings['loop_post_nav'] && ( ! $entries['prev'] instanceof WP_Post || ! $entries['next'] instanceof WP_Post ) ) { $order = ! $entries['prev'] instanceof WP_Post ? 'DESC' : 'ASC'; $args = array( 'post_type' => $settings['type'], 'post_status' => 'publish', 'posts_per_page' => 1, 'orderby' => array( 'post_date' => $order, 'ID' => $order ) ); $tax_query = array(); if( $settings['same_category'] ) { $ids_in = array(); $terms = get_the_terms( $post, $settings['taxonomy'] ); if( is_array( $terms ) && ! empty( $terms ) ) { foreach( $terms as $term ) { $ids_in[] = $term->term_id; } } if( ! empty( $ids_in ) ) { $tax_query[] = array( 'taxonomy' => $settings['taxonomy'], 'field' => 'term_id', 'terms' => $ids_in, 'operator' => 'IN', ); } } if( ! empty( $settings['excluded_terms'] ) ) { $ids_not_in = array(); if( is_array( $settings['excluded_terms'] ) ) { $ids_not_in = $settings['excluded_terms']; } else { $ids_not_in = explode( ',', $settings['excluded_terms'] ); } if( ! empty( $ids_not_in ) ) { $tax_query[] = array( 'taxonomy' => $settings['taxonomy'], 'field' => 'term_id', 'terms' => $ids_not_in, 'operator' => 'NOT IN', ); } } if( count( $tax_query ) > 1 ) { $tax_query['relation'] = 'AND'; } if( count( $tax_query ) >= 1 ) { $args['tax_query'] = $tax_query; } /** * Allows e.g. to change sort order of posts (see WP filter 'get_{$adjacent}_post_sort') in get_adjacent_post() * * @since 4.5.6.2 * @param array $args * @param array $settings * @return array */ $args = apply_filters( 'avf_post_nav_loop_args', $args, $settings ); $looped = new WP_Query( $args ); if( $looped->post_count >= 1 ) { if( ! $entries['prev'] instanceof WP_Post ) { $entries['prev'] = $looped->posts[0]; } else { $entries['next'] = $looped->posts[0]; } } } /** * Backwards comp. only, will be removed in future * @since < 4.0 * @added 4.5.6 */ $entries = apply_filters_deprecated( 'avia_post_nav_entries', array( $entries, $settings, $queried_entries ), '4.5.6', 'avf_post_nav_entries', __( 'Filter name has changed', 'avia_framework' ) ); /** * @used_by config-events-calendar\config.php avia_events_custom_post_nav() 10 * * @since 4.5.6 * @return array */ $entries = apply_filters( 'avf_post_nav_entries', $entries, $settings, $queried_entries ); $output = ''; foreach( $entries as $key => $entry ) { if( empty( $entry ) ) { continue; } $the_title = isset( $entry->av_custom_title ) ? $entry->av_custom_title : avia_backend_truncate( get_the_title( $entry->ID ), 75, ' ' ); $link = isset( $entry->av_custom_link ) ? $entry->av_custom_link : get_permalink( $entry->ID ); $image = isset( $entry->av_custom_image ) ? $entry->av_custom_image : get_the_post_thumbnail( $entry->ID, 'thumbnail' ); $tc1 = ''; $tc2 = ''; $class = $image ? 'with-image' : 'without-image'; $output .= "<a class='avia-post-nav avia-post-{$key} {$class}' href='{$link}' >"; $output .= '<span class="label iconfont" ' . av_icon_string( $key ) . '></span>'; $output .= '<span class="entry-info-wrap">'; $output .= '<span class="entry-info">'; $tc1 = "<span class='entry-title'>{$the_title}</span>"; if( $image ) { $tc2 = "<span class='entry-image'>{$image}</span>"; } $output .= $key == 'prev' ? $tc1 . $tc2 : $tc2 . $tc1; $output .= '</span>'; $output .= '</span>'; $output .= '</a>'; } return $output; } } if( ! function_exists( 'avia_ampersand' ) ) { /** * wrap ampersands into special calss to apply special styling * * @param string $content * @return string */ function avia_ampersand( $content ) { //ampersands $content = str_replace( ' & ', " <span class='special_amp'>&</span> ", $content ); $content = str_replace( ' & ', " <span class='special_amp'>&</span> ", $content ); // quotes $content = str_replace( "“", "<span class='special_amp'>“</span>", $content ); // left double quotation mark “ $content = str_replace( "”", "<span class='special_amp'>”</span>", $content ); // right double quotation mark ” $content = str_replace( "„", "<span class='special_amp'>„</span>", $content ); // double low-9 quotation mark „ $content = str_replace( '“', "<span class='special_amp'>“</span>", $content ); // left double quotation mark “ $content = str_replace( '”', "<span class='special_amp'>”</span>", $content ); // right double quotation mark ” $content = str_replace( '„', "<span class='special_amp'>„</span>", $content ); // double low-9 quotation mark „ return $content; } add_filter( 'avia_ampersand', 'avia_ampersand' ); } if( ! function_exists( 'avia_is_dark_bg' ) ) { /** * checks if a background color of a specific region is dark or light and returns a class name * * @param string $region * @param boolean $return_only * @return string|void */ function avia_is_dark_bg( $region, $return_only = false ) { global $avia_config; $color = $avia_config['backend_colors']['color_set'][$region]['bg']; $is_dark = avia_backend_calc_preceived_brightness( $color, 70 ); $return = $is_dark ? 'dark_bg_color' : 'light_bg_color'; if( false === $return_only ) { echo $return; } return $return; } } if( ! function_exists( 'avia_show_menu_description' ) ) { //add_action('avia_backend_theme_activation', 'avia_show_menu_description'); /** * set post excerpt to be visible on theme acivation in user backend * * @deprecated ??? */ function avia_show_menu_description() { global $current_user; _deprecated_function( 'avia_show_menu_description', '???', 'unused in Enfold' ); get_currentuserinfo(); $old_meta_data = $meta_data = get_user_meta( $current_user->ID, 'metaboxhidden_page', true ); if( is_array( $meta_data ) && isset( $meta_data[0] ) ) { $key = array_search( 'postexcerpt', $meta_data ); if( $key !== false ) { unset( $meta_data[ $key ] ); update_user_meta( $current_user->ID, 'metaboxhidden_page', $meta_data, $old_meta_data ); } } else { update_user_meta( $current_user->ID, 'metaboxhidden_page', array( 'postcustom', 'commentstatusdiv', 'commentsdiv', 'slugdiv', 'authordiv', 'revisionsdiv' ) ); } } } /** * Google Analytics Support * ======================== */ if( ! function_exists( 'avia_get_tracking_code' ) ) { /** * Make google analytics code work, even if the user only enters the UA id (UA-[0-9]*-[0-9]*). * With 4.8 support is extended for new GA4 tracking code G-[0-9A-Za-z] (Jan. 2021 - https://github.com/KriesiMedia/wp-themes/issues/3032 ) * * The async tracking code is placed in the header (GDPR is supported to only load when allowed). * * @return void */ function avia_get_tracking_code() { global $avia_config; $avia_config['analytics_code'] = ''; $analytics = avia_get_option( 'analytics', '' ); $avia_config['analytics_code'] = trim( $analytics ); if( empty( $avia_config['analytics_code'] ) ) { return; } // if we only get passed the UA-id or G-id create the script for the user (universal tracking code) if( strpos( $avia_config['analytics_code'], 'UA-' ) === 0 || strpos( $avia_config['analytics_code'], 'G-' ) === 0 ) { $avia_config['analytics_code'] = " <!-- Global site tag (gtag.js) - Google Analytics --> <script id='google_analytics_script' class='google_analytics_scripts' async src='https://www.googletagmanager.com/gtag/js?id=" . $avia_config['analytics_code'] . "'></script> <script class='google_analytics_scripts' type='text/javascript'> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '" . $avia_config['analytics_code'] . "', { 'anonymize_ip': true }); </script> "; } add_action( 'wp_footer', 'avia_print_tracking_code', 10000 ); } add_action( 'init', 'avia_get_tracking_code' ); } if( ! function_exists( 'avia_print_tracking_code' ) ) { /** * * @global type $avia_config */ function avia_print_tracking_code() { global $avia_config; if( ! empty( $avia_config['analytics_code'] ) ) { //extract UA ID from code $UAID = false; $extra_code = ''; $match = array(); $search_uaid = '!UA-[0-9]+-[0-9]+!'; $search_g4 = '!G-[0-9A-Za-z]+!'; preg_match( $search_uaid, $avia_config['analytics_code'], $match ); if( ! empty( $match ) && isset( $match[0] ) ) { $UAID = $match[0]; } else { preg_match( $search_g4, $avia_config['analytics_code'], $match ); if( ! empty( $match ) && isset( $match[0] ) ) { $UAID = $match[0]; } } $code = json_encode( $avia_config['analytics_code'] ); //if we got a valid uaid, add the js cookie check if( $UAID ) { $extra_code = " <script type='text/javascript'> (function($) { /* check if google analytics tracking is disabled by user setting via cookie - or user must opt in. */ var analytics_code = {$code}.replace(/\\\"/g, '\"' ); var html = document.getElementsByTagName('html')[0]; $('html').on( 'avia-cookie-settings-changed', function(e) { var cookie_check = html.className.indexOf('av-cookies-needs-opt-in') >= 0 || html.className.indexOf('av-cookies-can-opt-out') >= 0; var allow_continue = true; var silent_accept_cookie = html.className.indexOf('av-cookies-user-silent-accept') >= 0; var script_loaded = $( 'script.google_analytics_scripts' ); if( cookie_check && ! silent_accept_cookie ) { if( ! document.cookie.match(/aviaCookieConsent/) || html.className.indexOf('av-cookies-session-refused') >= 0 ) { allow_continue = false; } else { if( ! document.cookie.match(/aviaPrivacyRefuseCookiesHideBar/) ) { allow_continue = false; } else if( ! document.cookie.match(/aviaPrivacyEssentialCookiesEnabled/) ) { allow_continue = false; } else if( document.cookie.match(/aviaPrivacyGoogleTrackingDisabled/) ) { allow_continue = false; } } } if( ! allow_continue ) { // window['ga-disable-{$UAID}'] = true; if( script_loaded.length > 0 ) { script_loaded.remove(); } } else { if( script_loaded.length == 0 ) { $('head').append( analytics_code ); } } }); $('html').trigger( 'avia-cookie-settings-changed' ); })( jQuery ); </script>"; } echo $extra_code; } } } if( ! function_exists( 'avia_header_setting' ) ) { /** * checks which header style we are using. In general the whole site has the same header active, based on the option in theme options->header * however, for the theme demo we need to showcase all headers, thats why we can simply add a custom field key to overwrite the default heading * * @param string|false $single_val * @return array|mixed */ function avia_header_setting( $single_val = false ) { global $avia_config; if( isset( $avia_config['header_settings'] ) && $single_val && isset( $avia_config['header_settings'][ $single_val ] ) ) { return $avia_config['header_settings'][ $single_val ]; } // return cached header setting if available if( isset( $avia_config['header_settings'] ) && ! $single_val ) { return $avia_config['header_settings']; } $defaults = array( 'header_position' => 'header_top', 'header_layout' => 'logo_left menu_right', 'header_size' => 'slim', 'header_custom_size' => '', 'header_sticky' => 'header_sticky', 'header_shrinking' => 'header_shrinking', 'header_title_bar' => '', 'header_social' => '', 'header_unstick_top' => '', 'header_secondary_menu' => '', 'header_stretch' => '', 'header_custom_size' => '', 'header_phone_active' => '', 'header_replacement_logo' => '', 'header_replacement_logo_id' => 0, 'header_replacement_logo_title' => '', 'header_replacement_logo_alt' => '', 'header_replacement_logo_srcset' => '', 'header_replacement_logo_sizes' => '', 'header_replacement_menu' => '', 'header_replacement_menu_hover' => '', 'submenu_visibility' => '', 'overlay_style' => 'av-overlay-side', 'header_searchicon' => true, 'header_mobile_activation' => 'mobile_menu_phone', 'phone' =>'', 'sidebarmenu_sticky' => 'conditional_sticky', 'layout_align_content' => 'content_align_center', 'sidebarmenu_widgets' => '', 'sidebarmenu_social' => 'disabled', 'header_menu_border' => '', 'header_style' => '', 'blog_global_style' => '', 'menu_display' => '', 'alternate_menu' => '', 'submenu_clone' => 'av-submenu-noclone', ); $settings = avia_get_option(); //overwrite with custom fields if they are set $post_id = avia_get_the_id(); if( $post_id && is_singular() ) { $custom_fields = get_post_custom( $post_id ); foreach( $defaults as $key => $default ) { if( ! empty( $custom_fields[ $key ] ) && ! empty( $custom_fields[ $key ][0]) ) { $settings[ $key ] = $custom_fields[ $key ][0]; } } //check if header transparency is set to true $transparency = post_password_required() ? false : get_post_meta( $post_id, 'header_transparency', true ); } $header = shortcode_atts( $defaults, $settings ); $header['header_scroll_offset'] = avia_get_header_scroll_offset( $header ); // if sidebar main menu is active set the header accordingly and return the sidebar header if( $header['header_position'] != 'header_top' ) { return avia_header_setting_sidebar( $header, $single_val ); } //------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------ //if header main menu is above the logo set a var to indicate that and disable transparency and shrinking if( strpos( $header['header_layout'], 'top_nav_header' ) !== false ) { $header['header_menu_above'] = true; $header['header_shrinking'] = 'disabled'; $transparency = false; } //set header transparency $header['header_transparency'] = ''; if( ! empty( $transparency ) ) { $header['header_transparency'] = 'header_transparency'; } if( ! empty( $transparency ) && strpos( $transparency, 'glass') ) { $header['header_transparency'] .= ' header_glassy'; } if( ! empty( $transparency ) && strpos( $transparency, 'with_border') ) { $header['header_transparency'] .= ' header_with_border'; } if( ! empty( $transparency ) && strpos( $transparency, 'hidden') ) { $header['disabled'] = true; } if( ! empty( $transparency ) && strpos( $transparency, 'scrolldown') ) { $header['header_transparency'] .= ' header_scrolldown'; $header['header_sticky'] = 'header_sticky'; } // deactivate title bar if header is transparent if( ! empty( $transparency ) ) { $header['header_title_bar'] = 'hidden_title_bar'; } // sticky and shrinking are tied together if( $header['header_sticky'] == 'disabled' ) { $header['header_shrinking'] = 'disabled'; $header['header_scroll_offset'] = 0; } //if the custom height is less than 70 shrinking doesnt really work if( $header['header_size'] == 'custom' && (int) $header['header_custom_size'] < 65 ) { $header['header_shrinking'] = 'disabled'; } //deactivate icon menu if we dont have the correct header if( strpos( avia_get_option( 'header_layout' ), 'main_nav_header' ) === false ) { $header['menu_display'] = ''; } if( $header['menu_display'] == 'burger_menu' ) { $header['header_menu_border'] = ''; } if( avia_is_burger_menu() ) { $header['header_mobile_activation'] = 'mobile_menu_tablet'; } //create a header class so we can style properly $header_class_var = array( 'header_position', 'header_layout', 'header_size', 'header_sticky', 'header_shrinking', 'header_stretch', 'header_mobile_activation', 'header_transparency', 'header_searchicon', 'header_unstick_top', 'header_menu_border', 'header_style' ); $header['header_class'] = ''; foreach( $header_class_var as $class_name ) { if( ! empty( $header[ $class_name ] ) ) { if( $header[ $class_name ] == 'disabled' ) { $header[$class_name] = $class_name . '_disabled'; } $header['header_class'] .= ' av_' . str_replace( ' ', ' av_', $header[ $class_name ] ); } } //set manual flag if we should display the top bar $header['header_topbar'] = false; if( strpos( $header['header_social'], 'extra_header_active' ) !== false || strpos( $header['header_secondary_menu'], 'extra_header_active' ) !== false || ! empty( $header['header_phone_active'] ) ) { $header['header_topbar'] = 'header_topbar_active'; } //set manual flag if the menu is at the bottom $header['bottom_menu'] = false; if( strpos( $header['header_layout'],'bottom_nav_header' ) !== false ) { $header['bottom_menu'] = 'header_bottom_menu_active'; } else { $header['header_class'] .= ' av_bottom_nav_disabled '; } //header class that tells us to use the alternate logo if( ! empty( $header['header_replacement_logo'] ) ) { $header['header_class'] .= ' av_alternate_logo_active'; if( ! is_numeric( $header['header_replacement_logo'] ) && function_exists( 'attachment_url_to_postid' ) ) { $found = attachment_url_to_postid( $header['header_replacement_logo'] ); if( $found > 0 ) { $header['header_replacement_logo'] = $found; } } if( is_numeric( $header['header_replacement_logo'] ) ) { $header['header_replacement_logo_id'] = $header['header_replacement_logo']; // @since 4.8.2 support for responsive logo for retina screens $header_replacement_logo_src = Av_Responsive_Images()->responsive_image_src( $header['header_replacement_logo_id'], 'full' ); if( is_array( $header_replacement_logo_src ) ) { $header['header_replacement_logo'] = $header_replacement_logo_src[0]; /** * We added title and alt attribute - this allows to ignore it * * @since 4.5.7.2 * @param boolean * @param int * @rturn boolean */ if( false === apply_filters( 'avf_hide_transparency_logo_meta', false, $header['header_replacement_logo_id'] ) ) { $header['header_replacement_logo_title'] = get_the_title( $header['header_replacement_logo_id'] ); $header['header_replacement_logo_alt'] = get_post_meta( $header['header_replacement_logo_id'], '_wp_attachment_image_alt', true ); $header['header_replacement_logo_srcset'] = $header_replacement_logo_src['srcset']; $header['header_replacement_logo_sizes'] = $header_replacement_logo_src['sizes']; } } } $header_filtered = array( 'header_replacement_logo' => $header['header_replacement_logo'], 'header_replacement_logo_id' => $header['header_replacement_logo_id'], 'header_replacement_logo_title' => $header['header_replacement_logo_title'], 'header_replacement_logo_alt' => $header['header_replacement_logo_alt'], 'header_replacement_logo_srcset' => $header['header_replacement_logo_srcset'], 'header_replacement_logo_sizes' => $header['header_replacement_logo_sizes'], ); /** * @since 4.7.4.1 * @param array $header_filtered * @return array */ $header_filtered = apply_filters( 'avf_transparency_logo_data', $header_filtered ); $header = array_merge( $header, $header_filtered ); } //header class that tells us to use the alternate logo if( empty( $header['header_menu_border'] ) ) { $header['header_class'] .= ' av_header_border_disabled'; } /** * Modify the header settings * * @param array $header * @param string $context * @return array */ $header = apply_filters('avf_header_setting_filter', $header, 'setting_header' ); //make settings available globaly $avia_config['header_settings'] = $header; if( ! empty( $single_val ) && isset( $header[ $single_val ] ) ) { return $header[ $single_val ]; } return $header; } } if( ! function_exists( 'avia_header_setting_sidebar' ) ) { /** * * @param array $header * @param string|false $single_val * @return array */ function avia_header_setting_sidebar( $header, $single_val = false ) { $overwrite = array( 'header_layout' => 'logo_left menu_right', 'header_size' => 'slim', 'header_custom_size' => '', 'header_sticky' => 'disabled', 'header_shrinking' => 'disabled', 'header_title_bar' => 'hidden_title_bar', 'header_social' => '', 'header_secondary_menu' => '', 'header_stretch' => '', 'header_custom_size' => '', 'header_phone_active' => 'disabled', 'header_replacement_logo' => '', 'header_replacement_logo_id' => 0, 'header_replacement_logo_title' => '', 'header_replacement_logo_alt' => '', 'header_replacement_logo_srcset' => '', 'header_replacement_logo_sizes' => '', 'header_replacement_menu' => '', 'header_replacement_menu_hover' => '', 'header_mobile_activation' => 'mobile_menu_phone', 'phone' =>'', 'header_menu_border' => '', 'header_topbar' => false, 'bottom_menu' => false, 'header_style' => '', 'menu_display' => '', 'submenu_clone' => 'av-submenu-noclone', ); $header = array_merge( $header, $overwrite ); // Reset to actual user setting - otherwise burger menu will result in wrong behaviour $settings = avia_get_option(); $header['submenu_clone'] = isset( $settings['submenu_clone'] ) && in_array( $settings['submenu_clone'], array( 'av-submenu-clone', 'av-submenu-noclone' ) ) ? $settings['submenu_clone'] : 'av-submenu-noclone'; if( strpos($header['header_position'] , 'left') === false ) { $header['sidebarmenu_sticky'] = 'never_sticky'; } $header['header_class'] = ' av_' . str_replace( ' ', ' av_', $header['header_position'] . ' ' . $header['sidebarmenu_sticky'] ); /** * Modify the header settings * * @param array $header * @param string $context * @return array */ $header = apply_filters( 'avf_header_setting_filter', $header, 'setting_sidebar' ); //make settings available globaly $avia_config['header_settings'] = $header; if( ! empty( $single_val ) && isset( $header[ $single_val ] ) ) { return $header[ $single_val ]; } return $header; } } if( ! function_exists( 'avia_get_header_scroll_offset' ) ) { /** * * @param array|null $header * @return int */ function avia_get_header_scroll_offset( $header = array() ) { //#main data attribute used to calculate scroll offset $modifier = 0; if( empty( $header ) ) { $header['header_position'] = avia_get_option( 'header_position', 'header_top' ); $header['header_size'] = avia_get_option( 'header_size' ); $header['header_custom_size'] = avia_get_option( 'header_custom_size' ); $header['header_style'] = avia_get_option( 'header_style' ); } if( 'minimal_header' == $header['header_style'] ) { $modifier = 2; } switch( $header['header_size'] ) { case 'large': $header['header_scroll_offset'] = 116; break; case 'custom': $header['header_scroll_offset'] = $header['header_custom_size'] - $modifier; break; default : $header['header_scroll_offset'] = 88; break; } if( $header['header_position'] != 'header_top' ) { $header['header_scroll_offset'] = 0; } return $header['header_scroll_offset']; } } if( ! function_exists( 'avia_header_class_string' ) ) { /** * * @param array $necessary * @param string $prefix * @return string */ function avia_header_class_string( $necessary = array() , $prefix = 'html_' ) { if( empty( $necessary ) ) { $necessary = array( 'header_position', 'header_layout', 'header_size', 'header_sticky', 'header_shrinking', 'header_topbar', 'header_transparency', 'header_mobile_activation', 'header_searchicon', 'layout_align_content', 'header_unstick_top', 'header_stretch', 'header_style', 'blog_global_style', 'menu_display', 'submenu_visibility', 'overlay_style', 'alternate_menu', 'submenu_clone' ); } $settings = avia_header_setting(); $class = array(); $post_id = function_exists( 'avia_get_the_id' ) ? avia_get_the_id() : get_the_ID(); foreach( $necessary as $class_name ) { if( ! empty( $settings[ $class_name ] ) ) { $result = array_filter( explode( ' ', $settings[$class_name] ) ); $class = array_merge( $class, $result ); } } if( $post_id ) { $class[] = 'entry_id_' . $post_id; } if( is_admin_bar_showing() ) { $class[] = 'av_admin_bar_active'; } /** * @param array $class * @param array $necessary * @param string $prefix * @return array */ $class = apply_filters( 'avf_header_classes', $class, $necessary, $prefix ); if( ! empty( $class ) ) { $class = array_unique( $class ); $class = ' ' . $prefix . implode( ' ' . $prefix, $class ); } else { $class = ''; } return $class; } } if( ! function_exists( 'avia_blog_class_string' ) ) { /** * Returns class string for disabled blog data * * @since ??? * @param array $necessary * @param string $prefix * @return string */ function avia_blog_class_string( array $necessary = array(), $prefix = 'av-' ) { if( empty( $necessary ) ) { $necessary = array( 'blog-meta-author', 'blog-meta-comments', 'blog-meta-category', 'blog-meta-date', 'blog-meta-html-info', 'blog-meta-tag', ); } $class = array(); $settings = avia_get_option(); foreach( $necessary as $class_name ) { if( isset( $settings[ $class_name ] ) && $settings[ $class_name ] == 'disabled' ) { $class[] = $class_name . '-disabled'; } } $class = array_filter( array_unique( $class ) ); if( empty( $class ) ) { return ''; } return ' ' . $prefix . implode( ' ' . $prefix, $class ); } } if( ! function_exists( 'avia_header_html_custom_height' ) ) { /** * Output html for custom header height * */ function avia_header_html_custom_height() { $settings = avia_header_setting(); if( $settings['header_size'] == 'custom' ) { $modifier = 0; $size = $settings['header_custom_size']; $bottom_bar = $settings['bottom_menu'] == true ? 52 : 0; $top_bar = $settings['header_topbar'] == true ? 30 : 0; if( ! empty( $settings['header_style'] ) && 'minimal_header' == $settings['header_style'] ) { $modifier = 2; } $html = ''; $html .= "\n<style type='text/css' media='screen'>\n"; $html .= " #top #header_main > .container, #top #header_main > .container .main_menu .av-main-nav > li > a,"; $html .= " #top #header_main #menu-item-shop .cart_dropdown_link{ height:{$size}px; line-height: {$size}px; }\n"; $html .= " .html_top_nav_header .av-logo-container{ height:{$size}px; }\n"; $html .= " .html_header_top.html_header_sticky #top #wrap_all #main{ padding-top:" . ( (int) $size + $bottom_bar + $top_bar - $modifier ) . "px; } \n"; $html .= "</style>\n"; echo $html; } } add_action( 'wp_head', 'avia_header_html_custom_height' ); } if( ! function_exists( 'avia_sidebar_menu_additions' ) ) { /** * Display sidebar widgets in the main navigation area when it is set as sidebar instead of top */ function avia_sidebar_menu_additions() { $settings = avia_header_setting(); $output = ''; if( $settings['header_position'] != 'header_top' ) { /*add social icons*/ if( $settings['sidebarmenu_social'] != 'disabled' ) { $social_args = array( 'outside' => 'ul', 'inside' => 'li', 'append' => '' ); $social = avia_social_media_icons( $social_args, false ); if( $social ) { $output .= "<div class='av-sidebar-social-container'>{$social}</div>"; } } /*add widgets*/ if( ! empty( $settings['sidebarmenu_widgets'] ) ) { if( 'av-auto-widget-logic' == $settings['sidebarmenu_widgets'] ) { } else if( is_dynamic_sidebar( $settings['sidebarmenu_widgets'] ) ) { ob_start(); dynamic_sidebar( $settings['sidebarmenu_widgets'] ); $output .= ob_get_clean(); $output = "<aside class='avia-custom-sidebar-widget-area sidebar sidebar_right'>{$output}</aside>"; } } } echo $output; } add_action( 'ava_after_main_menu', 'avia_sidebar_menu_additions' ); } if( ! function_exists( 'avia_sidebar_menu' ) ) { /** * Display a subnavigation for pages that is automatically generated, so the users doesnt need to work with widgets * * @param boolean $echo * @return string */ function avia_sidebar_menu( $echo = true ) { global $post; $sidebar_menu = ''; $subNav = avia_get_option( 'page_nesting_nav' ); $the_id = @get_the_ID(); $args = array(); if( $subNav && $subNav != 'disabled' && ! empty( $the_id ) && is_page() ) { $subNav = false; $parent = $post->ID; $sidebar_menu = ''; if( ! empty($post->post_parent)) { if( isset( $post->ancestors ) ) { $ancestors = $post->ancestors; } if( ! isset( $ancestors ) ) { $ancestors = get_post_ancestors( $post->ID ); } $root = count( $ancestors ) - 1; $parent = $ancestors[ $root ]; } $args = array( 'title_li' => '', 'child_of' => $parent, 'echo' => 0, 'sort_column' => 'menu_order, post_title' ); //enables user to change query args $args = apply_filters( 'avia_sidebar_menu_args', $args, $post ); //hide or show child pages in menu - if the class is set to 'widget_nav_hide_child' the child pages will be hidden $display_child_pages = apply_filters( 'avia_sidebar_menu_display_child', 'widget_nav_hide_child', $args, $post ); $children = wp_list_pages( $args ); if ( $children ) { $default_sidebar = false; $sidebar_menu .= "<nav class='widget widget_nav_menu {$display_child_pages}'><ul class='nested_nav'>"; $sidebar_menu .= $children; $sidebar_menu .= '</ul></nav>'; } } $sidebar_menu = apply_filters( 'avf_sidebar_menu_filter', $sidebar_menu, $args, $post ); if( $echo == true ) { echo $sidebar_menu; } return $sidebar_menu; } } if( ! function_exists( 'avia_fix_tag_archive_page' ) ) { /** * show tag archive page for post type - without this code you'll get 404 errors: * http://wordpress.org/support/topic/custom-post-type-tagscategories-archive-page * * @param WP_Query $query * @return WP_Query */ function avia_fix_tag_archive_page( $query ) { $post_types = get_post_types(); if ( is_category() || is_tag() ) { if( ! is_admin() && $query->is_main_query() ) { $post_type = get_query_var( get_post_type() ); if( $post_type ) { $post_type = $post_type; } else { $post_type = $post_types; } $query->set( 'post_type', $post_type ); } } return $query; } add_filter('pre_get_posts', 'avia_fix_tag_archive_page'); } if( ! function_exists( 'avia_print_html5_js_script' ) ) { /** * add html5.js script to head section - required for IE compatibility */ function avia_print_html5_js_script() { $template_url = get_template_directory_uri(); $output = ''; $output .= '<!--[if lt IE 9]>'; $output .= '<script src="' . $template_url . '/js/html5shiv.js"></script>'; $output .= '<![endif]-->'; echo $output; } add_action( 'wp_head', 'avia_print_html5_js_script' ); } if( ! function_exists( 'avia_add_compat_header' ) ) { /** * IE compatibility * * @param array $headers * @return array */ function avia_add_compat_header( $headers ) { if( isset( $_SERVER['HTTP_USER_AGENT'] ) && strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== false ) { $headers['X-UA-Compatible'] = 'IE=edge,chrome=1'; } return $headers; } add_filter( 'wp_headers', 'avia_add_compat_header' ); } if( ! function_exists( 'avia_add_hide_featured_image_select' ) ) { /** * Add a select box to hide featured image on single post * * @param array $elements * @return array */ function avia_add_hide_featured_image_select( array $elements ) { if( ! is_admin() || ! function_exists( 'get_current_screen' ) ) { return $elements; } $screen = get_current_screen(); if( ! $screen instanceof WP_Screen ) { return $elements; } $hide_pt = apply_filters( 'avf_display_featured_image_posttypes', array( 'post', 'portfolio' ) ); if( ! in_array( $screen->post_type, $hide_pt ) ) { return $elements; } switch( $screen->post_type ) { case 'post': $desc = __( 'Select to display featured image for a single post entry.', 'avia_framework' ); break; case 'portfolio': $desc = __( 'Select to display featured image for a single portfolio entry.', 'avia_framework' ); break; default: $desc = apply_filters( 'avf_display_featured_image_desc', __( 'Select to display featured image for a single entry.', 'avia_framework' ) ); break; } $elements[] = array( 'slug' => 'layout', 'name' => __( 'Featured Image', 'avia_framework' ), 'desc' => $desc, 'id' => '_avia_hide_featured_image', 'type' => 'select', 'std' => '', 'class' => 'avia-style', 'subtype' => array( __( 'Show on single entry', 'avia_framework' ) => '', __( 'Hide on single entry', 'avia_framework' ) => '1' ) ); return $elements; } add_filter( 'avf_builder_elements', 'avia_add_hide_featured_image_select', 10, 1 ); } if( ! function_exists( 'avia_active_caching' ) ) { /** * Checks for caching plugins * Currently not used * * @return boolean */ function avia_active_caching() { if( defined( 'W3TC' ) || defined( 'WPCACHEHOME' ) || class_exists( 'HyperCache' ) || class_exists( '\\quick_cache\\plugin' ) ) { return true; } return false; } } if( ! function_exists( 'avia_menu_button_style' ) ) { /** * * @param string $output * @param object $item * @param int $depth * @param array $args * @param int $current_object_id */ function avia_menu_button_style( $output, $item, $depth, $args, $current_object_id = 0 ) { $item_id = $item->ID; $key = 'style'; $name = "menu-item-avia-{$key}"; //name prefix must be the same for all items $value = get_post_meta( $item->ID, '_' . $name, true ); ?> <!-- *************** start conditional logic input fields *************** --> <p class="field-avia-link-style description description-wide avia_mega_menu avia_mega_menu_d0"> <label for="<?php echo $key; ?>"> <?php _e( 'Menu Style' ); ?><br /> <select id="<?php echo $name . "-". $item_id;?>" class="widefat edit-menu-item-target" name="<?php echo $name . "[". $item_id ."]";?>"> <option value="" <?php selected( $value, '' ); ?> ><?php _e( 'Default Style' ); ?> </option> <option value="av-menu-button av-menu-button-colored" <?php selected( $value, 'av-menu-button av-menu-button-colored' ); ?> ><?php _e( 'Button Style (Colored)' ); ?> </option> <option value="av-menu-button av-menu-button-bordered" <?php selected( $value, 'av-menu-button av-menu-button-bordered' ); ?> ><?php _e( 'Button Style (Bordered)' ); ?> </option> </select> </label> </p> <?php } add_action( 'wp_nav_menu_item_custom_fields', 'avia_menu_button_style', 10, 5 ); } if( ! function_exists( 'avia_menu_button_style_save' ) ) { /** * * @param array $check * @param int $menu_id * @param type $menu_item_db * @return array */ function avia_menu_button_style_save( $check, $menu_id, $menu_item_db ) { $check = array_merge( $check, array('style') ); return $check; } add_filter( 'avf_mega_menu_post_meta_fields', 'avia_menu_button_style_save', 10, 3 ); } if( ! function_exists( 'avia_generate_grid_dimension' ) ) { /** * * @param array|'' $options * @param array $color_set * @param array $styles */ function avia_generate_grid_dimension( $options, $color_set, $styles ) { global $avia_config; if ( $options !== '' ) { extract( $options ); } if( empty( $content_width ) ) { $content_width = 73; } if( empty( $combined_width ) ) { $combined_width = 100; } if( empty( $responsive_size ) ) { $responsive_size = '1130px'; } if( $responsive_size != '' ) { $avia_config['style'][] = array( 'key' => 'direct_input', 'value' => ".container {width:{$combined_width}%;} .container .av-content-small.units {width:{$content_width}%; } .responsive .boxed#top , .responsive.html_boxed.html_header_sticky #header, .responsive.html_boxed.html_header_transparency #header{ width: {$responsive_size}; max-width:90%; } .responsive .container{ max-width: {$responsive_size}; } " ); } } add_action( 'ava_generate_styles', 'avia_generate_grid_dimension', 30, 3 ); /*after theme update*/ } if( ! function_exists( 'avia_disable_alb_drag_drop' ) ) { /** * Disables the alb drag and drop for non admins * * @param boolean $disable * @return boolean */ function avia_disable_alb_drag_drop( $disable ) { if( ! current_user_can( 'switch_themes' ) || avia_get_option( 'lock_alb_for_admins', 'disabled' ) != 'disabled' ) { $disable = avia_get_option( 'lock_alb', 'disabled' ) != 'disabled' ? true : false; } return $disable; } add_filter( 'avf_allow_drag_drop', 'avia_disable_alb_drag_drop', 30, 1 ); } /** * Function to display frame * ========================= */ if( ! function_exists( 'avia_framed_layout' ) ) { /** * * @param array $options * @param array $color_set * @param array $styles */ function avia_framed_layout( $options, $color_set, $styles ) { global $avia_config; extract( $styles ); if( isset( $body_style ) && $body_style === 'av-framed-box' ) { $avia_config['style'][] = array( 'key' => 'direct_input', 'value' => " html.html_av-framed-box{ padding:{$frame_width}px; } html.html_av-framed-box{ padding:{$frame_width}px; } html.html_av-framed-box .av-frame{ width: {$frame_width}px; height: {$frame_width}px; background:$body_color;} .html_header_top.html_header_sticky.html_av-framed-box #header_main, .html_header_top.html_header_sticky.html_av-framed-box #header_meta{ margin:0 {$frame_width}px; } html .avia-post-prev{left: {$frame_width}px; } html .avia-post-next{right:{$frame_width}px; } html.html_av-framed-box.html_av-overlay-side .av-burger-overlay-scroll{ right:{$frame_width}px; } " ); } } add_action( 'ava_generate_styles', 'avia_framed_layout', 40, 3 ); } if( ! function_exists( 'avia_framed_layout_bars' ) ) { /** * */ function avia_framed_layout_bars() { if( avia_get_option( 'color-body_style' ) == 'av-framed-box' ) { $output = ''; $output .= "<div class='av-frame av-frame-top av-frame-vert'></div>"; $output .= "<div class='av-frame av-frame-bottom av-frame-vert'></div>"; $output .= "<div class='av-frame av-frame-left av-frame-hor'></div>"; $output .= "<div class='av-frame av-frame-right av-frame-hor'></div>"; echo $output; } } add_action( 'wp_footer', 'avia_framed_layout_bars', 10 ); } if( ! function_exists( 'avia_generate_stylesheet' ) ) { add_action('ava_after_theme_update', 'avia_generate_stylesheet', 30, 1 ); /*after theme update*/ add_action('ava_after_import_demo_settings', 'avia_generate_stylesheet', 30, 1 ); /*after demo settings imoport*/ add_action('avia_ajax_after_save_options_page', 'avia_generate_stylesheet', 30, 1 ); /*after options page saving*/ /** * saves the style options array into an external css file rather than fetching the data from the database * * @param array|false $options */ function avia_generate_stylesheet( $options = false ) { global $avia; $safe_name = avia_backend_safe_string( $avia->base_data['prefix'] ); $safe_name = apply_filters( 'avf_dynamic_stylesheet_filename', $safe_name ); if( defined( 'AVIA_CSSFILE' ) && AVIA_CSSFILE === false ) { $dir_flag = update_option( 'avia_stylesheet_dir_writable' . $safe_name, 'false' ); $stylesheet_flag = update_option( 'avia_stylesheet_exists' . $safe_name, 'false' ); return; } $wp_upload_dir = wp_upload_dir(); $stylesheet_dir = $wp_upload_dir['basedir'] . '/dynamic_avia'; $stylesheet_dir = str_replace( '\\', '/', $stylesheet_dir ); $stylesheet_dir = apply_filters( 'avia_dyn_stylesheet_dir_path', $stylesheet_dir ); $isdir = avia_backend_create_folder( $stylesheet_dir ); /* * directory could not be created (WP upload folder not writeable) * @todo save error in db and output error message for user. * @todo maybe add mkdirfix: http://php.net/manual/de/function.mkdir.php */ if( $isdir === false ) { $dir_flag = update_option( 'avia_stylesheet_dir_writable' . $safe_name, 'false' ); $stylesheet_flag = update_option( 'avia_stylesheet_exists' . $safe_name, 'false' ); return; } /* * Go ahead - WP managed to create the folder as expected */ $stylesheet = trailingslashit( $stylesheet_dir ) . $safe_name . '.css'; /** * @since ??? * @param string $stylesheet * @return string */ $stylesheet = apply_filters( 'avia_dyn_stylesheet_file_path', $stylesheet ); //import avia_superobject and reset the options array $avia_superobject = $GLOBALS['avia']; $avia_superobject->reset_options(); //regenerate style array after saving options page so we can create a new css file that has the actual values and not the ones that were active when the script was called avia_prepare_dynamic_styles(); //generate stylesheet content $generate_style = new avia_style_generator( $avia_superobject, false, false, false ); $styles = $generate_style->create_styles(); $created = avia_backend_create_file( $stylesheet, $styles, true ); if( $created === true ) { $dir_flag = update_option( 'avia_stylesheet_dir_writable' . $safe_name, 'true' ); $stylesheet_flag = update_option( 'avia_stylesheet_exists' . $safe_name, 'true' ); $dynamic_id = update_option( 'avia_stylesheet_dynamic_version' . $safe_name, uniqid() ); } else { $dir_flag = update_option( 'avia_stylesheet_dir_writable' . $safe_name, 'false' ); $stylesheet_flag = update_option( 'avia_stylesheet_exists' . $safe_name, 'false' ); $dynamic_id = delete_option( 'avia_stylesheet_dynamic_version' . $safe_name ); } } } if( ! function_exists( 'avia_wp_cpt_request_redirect_fix' ) ) { /** * */ function avia_add_favicon() { echo "\n" . avia_favicon( avia_get_option( 'favicon' ) ) . "\n"; } /*favicon in front and backend*/ add_action( 'wp_head', 'avia_add_favicon' ); add_action( 'admin_head', 'avia_add_favicon' ); } if( ! function_exists( 'avia_wp_cpt_request_redirect_fix' ) ) { /** * WP core hack see https://core.trac.wordpress.org/ticket/15551 * * Paging does not work on single custom post type pages - always a redirect to page 1 by WP * * @since 4.0.6 * @param object $request * @return object */ function avia_wp_cpt_request_redirect_fix( $request ) { $args = array( 'public' => true, '_builtin' => false ); $cpts = get_post_types( $args, 'names', 'and' ); if( isset( $request->query_vars['post_type'] ) && in_array( $request->query_vars['post_type'], $cpts ) && true === $request->is_singular && - 1 == $request->current_post && true === $request->is_paged ) { add_filter( 'redirect_canonical', '__return_false' ); } return $request; } add_action( 'parse_query', 'avia_wp_cpt_request_redirect_fix' ); } /** * mobile sizes that overwrite elements default sizes */ if( ! function_exists( 'av_print_custom_font_size' ) ) { /** * * @param object $request */ function av_print_custom_font_size( $request ) { echo AviaHelper::av_print_mobile_sizes(); } add_action( 'wp_footer', 'av_print_custom_font_size' ); } if( ! function_exists( 'av_disable_live_preview' ) ) { /** * Disable element live preview * * @param array $data * @return array */ function av_disable_live_preview( $data ) { if( avia_get_option( 'preview_disable' ) == 'preview_disable' ) { $data['preview'] = 0; } return $data; } add_filter( 'avb_backend_editor_element_data_filter', 'av_disable_live_preview', 10, 1 ); } if( ! function_exists( 'av_attachment_copyright_field_edit' ) ) { /** * Adds a copyright field to the upload and edit dialogue of the media manager * * @author tinabillinger * @since 4.3 * @param array $form_fields * @param WP_Post $post * @return array */ function av_attachment_copyright_field_edit( $form_fields, $post ) { $form_fields['av_copyright_field'] = array( 'label' => __( 'Copyright', 'avia_framework' ), 'input' => 'text', 'value' => get_post_meta( $post->ID, '_avia_attachment_copyright', true ), ); return $form_fields; } add_filter( 'attachment_fields_to_edit', 'av_attachment_copyright_field_edit', 99, 2 ); } if( ! function_exists( 'av_attachment_copyright_field_save' ) ) { /** * Saves the copyright field created by filter above * * @author tinabillinger * @since 4.3 * @param array $post * @param array $attachment * @return array */ function av_attachment_copyright_field_save( $post, $attachment ) { if( ! empty( $attachment['av_copyright_field'] ) ) { update_post_meta( $post['ID'], '_avia_attachment_copyright', $attachment['av_copyright_field'] ); } else { delete_post_meta( $post['ID'], '_avia_attachment_copyright' ); } return $post; } add_filter( 'attachment_fields_to_save', 'av_attachment_copyright_field_save', 99, 2 ); } if( ! function_exists( 'avia_post_thumbnail_html' ) ) { /** * Attaches the information from the copyright field to get_the_post_thumbnail(). * The added tag is initally hidden by CSS, and can be made visible by choice * * @author tinabillinger * @since 4.3 * @param string $html * @param int $post_id * @param int $post_thumbnail_id * @param string|array $size * @param string $attr * @return string */ function avia_post_thumbnail_html( $html, $post_id, $post_thumbnail_id, $size, $attr ) { $attachment_id = get_post_thumbnail_id( $post_id ); $copyright_text = get_post_meta( $attachment_id, '_avia_attachment_copyright', true ); if( $copyright_text ) { $html .= "<small class='avia-copyright'>{$copyright_text}</small>"; } return $html; } if( ! is_admin() ) { add_filter( 'post_thumbnail_html', 'avia_post_thumbnail_html', 99, 5 ); } } if( ! function_exists( 'av_builder_meta_box_elements_content' ) ) { /** * Adjust element content to reflect main option settings * e.g. with sdding page as footer feature we need to adjust select box content of footer settings * * @since 4.2.7 * @added_by Günter * @param array $elements * @return array */ function av_builder_meta_box_elements_content( array $elements ) { $footer_options = avia_get_option( 'display_widgets_socket', 'all' ); if( false !== strpos( $footer_options, 'page' ) ) { $desc = __( 'Display the footer page?', 'avia_framework' ); $subtype = array( __( 'Default Layout - set in', 'avia_framework' ) . ' ' . THEMENAME. ' > ' . __( 'Footer', 'avia_framework' ) => '', __( 'Use selected page to display as footer and socket', 'avia_framework' ) => 'page_in_footer_socket', __( 'Use selected page to display as footer (no socket)', 'avia_framework' ) => 'page_in_footer', __( 'Don\'t display the socket & page', 'avia_framework' ) => 'nofooterarea' ); } else { $desc = __( 'Display the footer widgets?', 'avia_framework' ); $subtype = array( __( 'Default Layout - set in', 'avia_framework' ) . ' ' . THEMENAME . ' > ' . __( 'Footer', 'avia_framework' ) => '', __( 'Display the footer widgets & socket', 'avia_framework' ) => 'all', __( 'Display only the footer widgets (no socket)', 'avia_framework' ) => 'nosocket', __( 'Display only the socket (no footer widgets)', 'avia_framework' ) => 'nofooterwidgets', __( 'Don\'t display the socket & footer widgets', 'avia_framework' ) => 'nofooterarea' ); } foreach( $elements as &$element ) { if( 'footer' == $element['id'] ) { $element['desc'] = $desc; $element['subtype'] = $subtype; } } return $elements; } add_filter( 'avf_builder_elements', 'av_builder_meta_box_elements_content', 10000, 1 ); } if( ! function_exists( 'av_comment_field_order_reset' ) ) { /** * Comment form order * Restore comment form order to look like previous versions were comment field is below name/mail/website * * @author Kriesi * @since 4.5 * @param array $fields * @return array */ function av_comment_field_order_reset( $fields ) { $comment_field = $fields['comment']; unset( $fields['comment'] ); $fields['comment'] = $comment_field; return $fields; } add_filter( 'comment_form_fields', 'av_comment_field_order_reset', 10, 1 ); } if( ! function_exists( 'avia_remove_query_strings' ) ) { /** * Remove query strings (like version) from static resources in production. * * @since 4.7.4.1 * @param string $src * @param string $handle * @return string */ function avia_remove_query_strings( $src, $handle = '' ) { if( defined( 'WP_DEBUG' ) && WP_DEBUG ) { return $src; } if( avia_get_option( 'remove_query_string_from_resources', '' ) != 'remove_query_string_from_resources' ) { return $src; } // Ignore option for our post css files - we need ver= to invalidate browser cache !! if( false !== strpos( $handle, 'avia-single-post-' ) ) { return $src; } $source = preg_split( "/(&ver|\?ver)/", $src ); return $source[0]; } if( ! is_admin() ) { add_filter( 'script_loader_src', 'avia_remove_query_strings', 15, 2 ); add_filter( 'style_loader_src', 'avia_remove_query_strings', 15, 2 ); } }
Cokiee Shell Web 1.0, Coded By Razor
Neueste Kommentare