'%1$s%2$s', 'logo_class' => 'site-logo', 'title' => '%2$s', 'title_class' => 'site-title', 'home_wrap' => '

%2$s

', 'single_wrap' => '
%2$s
', 'condition' => ( is_front_page() || is_home() ) && ! is_page(), ); $args = wp_parse_args( $args, $defaults ); /** * Filters the arguments for `avantex_site_logo()`. * * @since Twenty Twenty 1.0 * * @param array $args Parsed arguments. * @param array $defaults Function's default arguments. */ $args = apply_filters( 'avantex_site_logo_args', $args, $defaults ); if ( has_custom_logo() ) { $contents = sprintf( $args['logo'], $logo, esc_html( $site_title ) ); $classname = $args['logo_class']; } else { $contents = sprintf( $args['title'], esc_url( get_home_url( null, '/' ) ), esc_html( $site_title ) ); $classname = $args['title_class']; } $wrap = $args['condition'] ? 'home_wrap' : 'single_wrap'; $html = sprintf( $args[ $wrap ], $classname, $contents ); /** * Filters the arguments for `avantex_site_logo()`. * * @since Twenty Twenty 1.0 * * @param string $html Compiled HTML based on our arguments. * @param array $args Parsed arguments. * @param string $classname Class name based on current view, home or single. * @param string $contents HTML for site title or logo. */ $html = apply_filters( 'avantex_site_logo', $html, $args, $classname, $contents ); if ( ! $echo ) { return $html; } echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * Displays the site description. * * @since Twenty Twenty 1.0 * * @param bool $echo Echo or return the html. * @return string The HTML to display. */ function avantex_site_description( $echo = true ) { $description = get_bloginfo( 'description' ); if ( ! $description ) { return; } $wrapper = '
%s
'; $html = sprintf( $wrapper, esc_html( $description ) ); /** * Filters the HTML for the site description. * * @since Twenty Twenty 1.0 * * @param string $html The HTML to display. * @param string $description Site description via `bloginfo()`. * @param string $wrapper The format used in case you want to reuse it in a `sprintf()`. */ $html = apply_filters( 'avantex_site_description', $html, $description, $wrapper ); if ( ! $echo ) { return $html; } echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * Comments */ /** * Checks if the specified comment is written by the author of the post commented on. * * @since Twenty Twenty 1.0 * * @param object $comment Comment data. * @return bool */ function avantex_is_comment_by_post_author( $comment = null ) { if ( is_object( $comment ) && $comment->user_id > 0 ) { $user = get_userdata( $comment->user_id ); $post = get_post( $comment->comment_post_ID ); if ( ! empty( $user ) && ! empty( $post ) ) { return $comment->user_id === $post->post_author; } } return false; } /** * Filters comment reply link to not JS scroll. * * Filter the comment reply link to add a class indicating it should not use JS slow-scroll, as it * makes it scroll to the wrong position on the page. * * @since Twenty Twenty 1.0 * * @param string $link Link to the top of the page. * @return string Link to the top of the page. */ function avantex_filter_comment_reply_link( $link ) { $link = str_replace( 'class=\'', 'class=\'do-not-scroll ', $link ); return $link; } add_filter( 'comment_reply_link', 'avantex_filter_comment_reply_link' ); /** * Post Meta */ /** * Retrieves and displays the post meta. * * If it's a single post, outputs the post meta values specified in the Customizer settings. * * @since Twenty Twenty 1.0 * * @param int $post_id The ID of the post for which the post meta should be output. * @param string $location Which post meta location to output – single or preview. */ function avantex_the_post_meta( $post_id = null, $location = 'single-top' ) { echo avantex_get_post_meta( $post_id, $location ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped in avantex_get_post_meta(). } /** * Filters the edit post link to add an icon and use the post meta structure. * * @since Twenty Twenty 1.0 * * @param string $link Anchor tag for the edit link. * @param int $post_id Post ID. * @param string $text Anchor text. */ function avantex_edit_post_link( $link, $post_id, $text ) { if ( is_admin() ) { return $link; } $edit_url = get_edit_post_link( $post_id ); if ( ! $edit_url ) { return; } $text = sprintf( wp_kses( /* translators: %s: Post title. Only visible to screen readers. */ __( 'Edit %s', 'avantex' ), array( 'span' => array( 'class' => array(), ), ) ), get_the_title( $post_id ) ); return '
'; } add_filter( 'edit_post_link', 'avantex_edit_post_link', 10, 3 ); /** * Retrieves the post meta. * * @since Twenty Twenty 1.0 * * @param int $post_id The ID of the post. * @param string $location The location where the meta is shown. */ function avantex_get_post_meta( $post_id = null, $location = 'single-top' ) { // Require post ID. if ( ! $post_id ) { return; } /** * Filters post types array. * * This filter can be used to hide post meta information of post, page or custom post type * registered by child themes or plugins. * * @since Twenty Twenty 1.0 * * @param array Array of post types. */ $disallowed_post_types = apply_filters( 'avantex_disallowed_post_types_for_meta_output', array( 'page' ) ); // Check whether the post type is allowed to output post meta. if ( in_array( get_post_type( $post_id ), $disallowed_post_types, true ) ) { return; } $post_meta_wrapper_classes = ''; $post_meta_classes = ''; // Get the post meta settings for the location specified. if ( 'single-top' === $location ) { /** * Filters post meta info visibility. * * Use this filter to hide post meta information like Author, Post date, Comments, Is sticky status. * * @since Twenty Twenty 1.0 * * @param array $args { * @type string $author * @type string $post-date * @type string $comments * @type string $sticky * } */ $post_meta = apply_filters( 'avantex_post_meta_location_single_top', array( 'author', 'post-date', 'comments', 'sticky', ) ); $post_meta_wrapper_classes = ' post-meta-single post-meta-single-top'; } elseif ( 'single-bottom' === $location ) { /** * Filters post tags visibility. * * Use this filter to hide post tags. * * @since Twenty Twenty 1.0 * * @param array $args { * @type string $tags * } */ $post_meta = apply_filters( 'avantex_post_meta_location_single_bottom', array( 'tags', ) ); $post_meta_wrapper_classes = ' post-meta-single post-meta-single-bottom'; } // If the post meta setting has the value 'empty', it's explicitly empty and the default post meta shouldn't be output. if ( $post_meta && ! in_array( 'empty', $post_meta, true ) ) { // Make sure we don't output an empty container. $has_meta = false; global $post; $the_post = get_post( $post_id ); setup_postdata( $the_post ); ob_start(); ?>
show_toggles ) && $args->show_toggles ) { // Wrap the menu item link contents in a div, used for positioning. $args->before = '
'; $args->after = ''; // Add a toggle to items with children. if ( in_array( 'menu-item-has-children', $item->classes, true ) ) { $toggle_target_string = '.menu-modal .menu-item-' . $item->ID . ' > .sub-menu'; $toggle_duration = avantex_toggle_duration(); // Add the sub menu toggle. $args->after .= ''; } // Close the wrapper. $args->after .= '
'; // Add sub menu icons to the primary menu without toggles. } elseif ( 'primary' === $args->theme_location ) { if ( in_array( 'menu-item-has-children', $item->classes, true ) ) { $args->after = ''; } else { $args->after = ''; } } return $args; } add_filter( 'nav_menu_item_args', 'avantex_add_sub_toggles_to_main_menu', 10, 3 ); /** * Displays SVG icons in social links menu. * * @since Twenty Twenty 1.0 * * @param string $item_output The menu item's starting HTML output. * @param WP_Post $item Menu item data object. * @param int $depth Depth of the menu. Used for padding. * @param stdClass $args An object of wp_nav_menu() arguments. * @return string The menu item output with social icon. */ function avantex_nav_menu_social_icons( $item_output, $item, $depth, $args ) { // Change SVG icon inside social links menu if there is supported URL. if ( 'social' === $args->theme_location ) { $svg = avantex_SVG_Icons::get_social_link_svg( $item->url ); if ( empty( $svg ) ) { $svg = avantex_get_theme_svg( 'link' ); } $item_output = str_replace( $args->link_after, '' . $svg, $item_output ); } return $item_output; } add_filter( 'walker_nav_menu_start_el', 'avantex_nav_menu_social_icons', 10, 4 ); /** * Classes */ /** * Adds 'no-js' class. * * If we're missing JavaScript support, the HTML element will have a 'no-js' class. * * @since Twenty Twenty 1.0 */ function avantex_no_js_class() { ?> post_type : false; // Check whether we're singular. if ( is_singular() ) { $classes[] = 'singular'; } // Check whether the current page should have an overlay header. if ( is_page_template( array( 'templates/template-cover.php' ) ) ) { $classes[] = 'overlay-header'; } // Check whether the current page has full-width content. if ( is_page_template( array( 'templates/template-full-width.php' ) ) ) { $classes[] = 'has-full-width-content'; } // Check for enabled search. if ( true === get_theme_mod( 'enable_header_search', true ) ) { $classes[] = 'enable-search-modal'; } // Check for post thumbnail. if ( is_singular() && has_post_thumbnail() ) { $classes[] = 'has-post-thumbnail'; } elseif ( is_singular() ) { $classes[] = 'missing-post-thumbnail'; } // Check whether we're in the customizer preview. if ( is_customize_preview() ) { $classes[] = 'customizer-preview'; } // Check if posts have single pagination. if ( is_single() && ( get_next_post() || get_previous_post() ) ) { $classes[] = 'has-single-pagination'; } else { $classes[] = 'has-no-pagination'; } // Check if we're showing comments. if ( $post && ( ( 'post' === $post_type || comments_open() || get_comments_number() ) && ! post_password_required() ) ) { $classes[] = 'showing-comments'; } else { $classes[] = 'not-showing-comments'; } // Check if avatars are visible. $classes[] = get_option( 'show_avatars' ) ? 'show-avatars' : 'hide-avatars'; // Slim page template class names (class = name - file suffix). if ( is_page_template() ) { $classes[] = basename( get_page_template_slug(), '.php' ); } // Check for the elements output in the top part of the footer. $has_footer_menu = has_nav_menu( 'footer' ); $has_social_menu = has_nav_menu( 'social' ); $has_sidebar_1 = is_active_sidebar( 'sidebar-1' ); $has_sidebar_2 = is_active_sidebar( 'sidebar-2' ); // Add a class indicating whether those elements are output. if ( $has_footer_menu || $has_social_menu || $has_sidebar_1 || $has_sidebar_2 ) { $classes[] = 'footer-top-visible'; } else { $classes[] = 'footer-top-hidden'; } // Get header/footer background color. $header_footer_background = get_theme_mod( 'header_footer_background_color', '#ffffff' ); $header_footer_background = strtolower( '#' . ltrim( $header_footer_background, '#' ) ); // Get content background color. $background_color = get_theme_mod( 'background_color', 'f5efe0' ); $background_color = strtolower( '#' . ltrim( $background_color, '#' ) ); // Add extra class if main background and header/footer background are the same color. if ( $background_color === $header_footer_background ) { $classes[] = 'reduced-spacing'; } return $classes; } add_filter( 'body_class', 'avantex_body_classes' ); /** * Archives */ /** * Filters the archive title and styles the word before the first colon. * * @since Twenty Twenty 1.0 * * @param string $title Current archive title. * @return string Current archive title. */ function avantex_get_the_archive_title( $title ) { /** * Filters the regular expression used to style the word before the first colon. * * @since Twenty Twenty 1.0 * * @param array $regex An array of regular expression pattern and replacement. */ $regex = apply_filters( 'avantex_get_the_archive_title_regex', array( 'pattern' => '/(\A[^\:]+\:)/', 'replacement' => '$1', ) ); if ( empty( $regex ) ) { return $title; } return preg_replace( $regex['pattern'], $regex['replacement'], $title ); } add_filter( 'get_the_archive_title', 'avantex_get_the_archive_title' ); /** * Miscellaneous */ /** * Toggles animation duration in milliseconds. * * @since Twenty Twenty 1.0 * * @return int Duration in milliseconds */ function avantex_toggle_duration() { /** * Filters the animation duration/speed used usually for submenu toggles. * * @since Twenty Twenty 1.0 * * @param int $duration Duration in milliseconds. */ $duration = apply_filters( 'avantex_toggle_duration', 250 ); return $duration; } /** * Gets unique ID. * * This is a PHP implementation of Underscore's uniqueId method. A static variable * contains an integer that is incremented with each call. This number is returned * with the optional prefix. As such the returned value is not universally unique, * but it is unique across the life of the PHP process. * * @since Twenty Twenty 1.0 * * @see wp_unique_id() Themes requiring WordPress 5.0.3 and greater should use this instead. * * @param string $prefix Prefix for the returned ID. * @return string Unique ID. */ function avantex_unique_id( $prefix = '' ) { static $id_counter = 0; if ( function_exists( 'wp_unique_id' ) ) { return wp_unique_id( $prefix ); } return $prefix . (string) ++$id_counter; } /** * Functions which enhance the theme into WordPress * * @package avantex */ /** * Theme Custom Logo */ function avantex_header_logo() { ?> <?php esc_attr(bloginfo(">

$subvalue ) { $value[ $key ] = sanitize_text_field( $subvalue ); } return $value; } return sanitize_text_field( $value ); } function avantex_sanitize_text( $input ) { return wp_kses_post( force_balance_tags( $input ) ); } /** * Theme Comment Function */ if ( ! function_exists( 'avantex_comment' ) ) : function avantex_comment( $comment, $args, $depth ) { //get theme data global $comment_data; //translations $leave_reply = $comment_data['translation_reply_to_coment'] ? $comment_data['translation_reply_to_coment'] : __('Reply','avantex');?>
id="comment-">
$leave_reply,'depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
comment_approved == '0' ) : ?>
post_author; if( empty( $user_id ) ){ return; } $user_info = get_userdata( $user_id ); echo esc_html( $user_info->display_name ); } add_filter('get_avatar','avantex_gravatar_class'); function avantex_gravatar_class($class) { $class = str_replace("class='avatar", "class='img-circle", $class); return $class; } function avantex_read_more_button_class($read_class) { global $post; return '

ID}\" class=\"more-link\">" .esc_html__('Read More','avantex')."

"; } add_filter( 'the_content_more_link', 'avantex_read_more_button_class' ); function avantex_post_thumbnail() { if(has_post_thumbnail()){ echo '
'; the_post_thumbnail( '', array( 'class'=>'img-fluid' ) ); echo '
'; } } /** * Theme Page Header Title */ function avantex_theme_page_header_title(){ if( is_archive() ) { echo '

'; if ( is_day() ) : /* translators: %1$s %2$s: date */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Archives','avantex'), get_the_date() ); elseif ( is_month() ) : /* translators: %1$s %2$s: month */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Archives','avantex'), get_the_date( 'F Y' ) ); elseif ( is_year() ) : /* translators: %1$s %2$s: year */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Archives','avantex'), get_the_date( 'Y' ) ); elseif( is_author() ): /* translators: %1$s %2$s: author */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('All posts by','avantex'), get_the_author() ); elseif( is_category() ): /* translators: %1$s %2$s: category */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Category','avantex'), single_cat_title( '', false ) ); elseif( is_tag() ): /* translators: %1$s %2$s: tag */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Tag','avantex'), single_tag_title( '', false ) ); elseif( class_exists( 'WooCommerce' ) && is_shop() ): /* translators: %1$s %2$s: WooCommerce */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Shop','avantex'), single_tag_title( '', false )); elseif( is_archive() ): the_archive_title( '

', '

' ); endif; echo '
'; } elseif( is_404() ) { echo '

'; /* translators: %1$s: 404 */ printf( esc_html__( '%1$s', 'avantex' ) , esc_html__('Error 404','avantex') ); echo '

'; } elseif( is_search() ) { echo '

'; /* translators: %1$s %2$s: search */ printf( esc_html__( '%1$s %2$s', 'avantex' ), esc_html__('Search results for','avantex'), get_search_query() ); echo '

'; } else { echo '

'.esc_html( get_the_title() ).'

'; } } function avantex_bootstrap_menu_notitle( $menu ){ return $menu = preg_replace('/ title=\"(.*?)\"/', '', $menu ); } add_filter( 'wp_nav_menu', 'avantex_bootstrap_menu_notitle' ); /** * Theme Breadcrumbs Url */ function avantex_page_url() { $page_url = 'http'; if ( key_exists("HTTPS", $_SERVER) && ( $_SERVER["HTTPS"] == "on" ) ){ $page_url .= "s"; } $page_url .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $page_url .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"]; } else { $page_url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; } return $page_url; } /** * Theme Breadcrumbs */ if( !function_exists('avantex_page_header_breadcrumbs') ): function avantex_page_header_breadcrumbs() { global $post; $homeLink = home_url(); $avantex_page_header_layout = get_theme_mod('avantex_page_header_layout', 'avantex_page_header_layout1'); if($avantex_page_header_layout == 'avantex_page_header_layout1'): $breadcrumb_class = 'text-center'; else: $breadcrumb_class = 'text-right'; endif; echo ''; } endif; if( ! function_exists( 'avantex_custom_customizer_options' ) ): function avantex_custom_customizer_options() { $avantex_sticky_bar_logo = get_theme_mod('avantex_sticky_bar_logo'); $output_css = ''; if ( has_header_image() ) : $output_css .=".page-title-module { background: #17212c url(" .esc_url( get_header_image() ). "); background-attachment: scroll; background-position: top center; background-repeat: no-repeat; background-size: cover; background-attachment: fixed; }\n"; $avantex_page_header_background_color = get_theme_mod('avantex_page_header_background_color'); $output_css .=".page-title-module:before { background-color: $avantex_page_header_background_color !important; }\n"; endif; if($avantex_sticky_bar_logo != null) : $output_css .=".navbar-fixed .navbar-brand { display: none !important; } .not-sticky .sticky-navbar-brand { display: none !important; }\n"; endif; $avantex_page_header_disabled = get_theme_mod('avantex_page_header_disabled', true); $avantex_main_slider_disabled = get_theme_mod('avantex_main_slider_disabled', true); //Page header CCS for Pages + Front page if ( $avantex_main_slider_disabled != true && $avantex_page_header_disabled != true ): $output_css .=".site-content{ margin-top:5%; }\n"; endif; //Menu css if ($avantex_page_header_disabled != true): $output_css .=".site-content { margin-top: 9% !important; }\n"; endif; if ( is_user_logged_in() && is_admin_bar_showing() ) { $output_css .="@media (min-width: 600px){ .navbar-fixed{top:32px;} }\n"; } wp_add_inline_style( 'avantex-style-css', $output_css ); } endif; add_action( 'wp_enqueue_scripts', 'avantex_custom_customizer_options' ); /** * Admin notice */ class avantex_screen { public function __construct() { /* notice Lines*/ add_action( 'switch_theme', array( $this, 'flush_dismiss_status' ) ); add_action( 'admin_init', array( $this, 'getting_started_notice_dismissed' ) ); add_action( 'load-themes.php', array( $this, 'avantex_activation_admin_notice' ) ); } public function avantex_activation_admin_notice() { global $pagenow; if ( is_admin() && ( 'themes.php' == $pagenow ) ) { add_action( 'admin_notices', array( $this, 'avantex_admin_notice' ), 99 ); } } /** * Display an admin notice linking to the welcome screen * * @sfunctionse 1.8.2.4 */ public function avantex_admin_notice() { if ( is_admin() && ! get_user_meta( get_current_user_id(), 'gs_notice_dismissed' ) ) { ?>
Dismiss this notice
'; ?>
<?php esc_attr_e( 'Theme Screenshot', 'avantex' ); ?>

' . wp_get_theme()->get( 'Name' ) . '' ); ?>

Avantex Companion plugin to load default data, then enjoy this theme.', 'avantex' ) ); ?>

' . wp_get_theme()->get( 'Name' ) . '' ); ?> ', '', '' ); ?>
sanitize_key( wp_unslash( $plugin ) ), 'fields' => array( 'sections' => false, ), ) ); $skin = new WP_Ajax_Upgrader_Skin(); $upgrader = new Plugin_Upgrader( $skin ); $result = $upgrader->install( $api->download_link ); } if ( current_user_can( 'activate_plugin' ) ) { activate_plugin( $plugin . '/' . $plugin . '.php' ); } } }