/home/ytevagd/public_html/wp-content/themes/flatsome/inc/functions/function-setup.php
<?php

if ( ! isset( $content_width ) ) {
	$content_width = 1020; // Pixels.
}

/**
 * Initialized Envato and Flatsome Account implementation.
 */
flatsome_envato();

/**
 * Only load styles for used blocks.
 */
add_filter( 'should_load_separate_core_block_assets', '__return_true' );

/**
 * Use shortcodes for cart & checkout, since WC 8.3 cart & checkout are blocks by default upon first installation.
 *
 * @param array $pages Pages.
 *
 * @return array
 */
function flatsome_woocommerce_create_pages( $pages ) {
	if ( ! fl_woocommerce_version_check( '8.3' ) ) {
		return $pages;
	}

	if ( apply_filters( 'experimental_flatsome_woocommerce_blockify', false ) ) {
		return $pages;
	}

	$pages['cart']['content']     = '<!-- wp:shortcode -->[woocommerce_cart]<!-- /wp:shortcode -->';
	$pages['checkout']['content'] = '<!-- wp:shortcode -->[woocommerce_checkout]<!-- /wp:shortcode -->';

	return $pages;
}

add_filter( 'woocommerce_create_pages', 'flatsome_woocommerce_create_pages' );

/**
 * Setup Flatsome.
 */
function flatsome_setup() {

	/* add woocommerce support */
	add_theme_support( 'woocommerce' );

	if ( get_theme_mod( 'wpseo_breadcrumb' ) ) {
		add_theme_support( 'yoast-seo-breadcrumbs' );
	}

	/* add title tag support */
	add_theme_support( 'title-tag' );

	/* Load child theme languages */
	load_theme_textdomain( 'flatsome', get_stylesheet_directory() . '/languages' );

	/* load theme languages */
	load_theme_textdomain( 'flatsome', get_template_directory() . '/languages' );

	/* Add default posts and comments RSS feed links to head */
	add_theme_support( 'automatic-feed-links' );

	/* Add excerpt to pages */
	add_post_type_support( 'page', 'excerpt' );

	/* Add support for post thumbnails */
	add_theme_support( 'post-thumbnails' );

	/* Add support for Selective Widget refresh */
	add_theme_support( 'customize-selective-refresh-widgets' );

	/** Add sensei support */
	add_theme_support( 'sensei' );

	/* Add support for HTML5 */
	add_theme_support( 'html5', array(
		'search-form',
		'comment-form',
		'comment-list',
		'gallery',
		'caption',
		'widgets',
	) );

	/*  Register menus. */
	register_nav_menus( array(
		'primary'        => __( 'Main Menu', 'flatsome' ),
		'primary_mobile' => __( 'Main Menu - Mobile', 'flatsome' ),
		'secondary'      => __( 'Secondary Menu', 'flatsome' ),
		'footer'         => __( 'Footer Menu', 'flatsome' ),
		'top_bar_nav'    => __( 'Top Bar Menu', 'flatsome' ),
		'my_account'     => __( 'My Account Menu', 'flatsome' ),
		'vertical'       => __( 'Vertical Menu', 'flatsome' ),
	) );

	/*  Register post meta. */
	register_post_meta( 'page', '_footer', array(
		'show_in_rest'  => current_user_can( 'edit_posts' ),
		'single'        => true,
		'type'          => 'string',
		'default'       => 'normal',
		'auth_callback' => function () {
			return current_user_can( 'edit_posts' );
		},
	) );

	/*  Enable support for Post Formats */
	add_theme_support( 'post-formats', array( 'video' ) );

	// Disable widgets-block-editor for now.
	remove_theme_support( 'widgets-block-editor' );
}

add_action( 'after_setup_theme', 'flatsome_setup' );


/**
 * Setup Theme Widgets
 */
function flatsome_widgets_init() {

	$title_before = '';
	$title_class  = '';
	$title_after  = '<div class="is-divider small"></div>';

	register_sidebar( array(
		'name'          => __( 'Sidebar', 'flatsome' ),
		'id'            => 'sidebar-main',
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget'  => '</aside>',
		'before_title'  => $title_before . '<span class="widget-title ' . $title_class . '"><span>',
		'after_title'   => '</span></span>' . $title_after,
	) );


	register_sidebar( array(
		'name'          => __( 'Footer 1', 'flatsome' ),
		'id'            => 'sidebar-footer-1',
		'before_widget' => '<div id="%1$s" class="col pb-0 widget %2$s">',
		'after_widget'  => '</div>',
		'before_title'  => '<span class="widget-title">',
		'after_title'   => '</span><div class="is-divider small"></div>',
	) );


	register_sidebar( array(
		'name'          => __( 'Footer 2', 'flatsome' ),
		'id'            => 'sidebar-footer-2',
		'before_widget' => '<div id="%1$s" class="col pb-0 widget %2$s">',
		'after_widget'  => '</div>',
		'before_title'  => '<span class="widget-title">',
		'after_title'   => '</span><div class="is-divider small"></div>',
	) );
}

add_action( 'widgets_init', 'flatsome_widgets_init' );


/**
 * Setup Flatsome Styles and Scripts
 */
function flatsome_scripts() {
	$uri     = get_template_directory_uri();
	$theme   = wp_get_theme( get_template() );
	$version = $theme->get( 'Version' );

	// Styles.
	wp_enqueue_style( 'flatsome-main', $uri . '/assets/css/flatsome.css', array(), $version, 'all' );
	wp_style_add_data( 'flatsome-main', 'rtl', 'replace' );


	if ( is_woocommerce_activated() ) {
		wp_enqueue_style( 'flatsome-shop', $uri . '/assets/css/flatsome-shop.css', array(), $version, 'all' );
		wp_style_add_data( 'flatsome-shop', 'rtl', 'replace' );
	}

	// Load current theme styles.css file.
	if ( ! get_theme_mod( 'flatsome_disable_style_css', 0 ) ) {
		wp_enqueue_style( 'flatsome-style', get_stylesheet_uri(), array(), wp_get_theme()->get( 'Version' ), 'all' );
	}

	// Register styles (Loaded on request).
	wp_register_style( 'flatsome-effects', $uri . '/assets/css/effects.css', array(), $version, 'all' );

	// Register scripts (Loaded on request).
	wp_register_script( 'flatsome-masonry-js', $uri . '/assets/libs/packery.pkgd.min.js', array( 'jquery' ), $version, true );
	wp_register_script( 'flatsome-isotope-js', $uri . '/assets/libs/isotope.pkgd.min.js', array( 'jquery', 'flatsome-js' ), $version, true );

	// Google maps.
	$maps_api = trim( get_theme_mod( 'google_map_api' ) );
	if ( ! empty( $maps_api ) ) {
		wp_register_script( 'flatsome-maps', "//maps.googleapis.com/maps/api/js?key=$maps_api&callback=jQuery.noop", array( 'jquery' ), $version, true );
	}

	// Enqueue theme scripts.
	flatsome_enqueue_asset( 'flatsome-js', 'flatsome', array( 'jquery', 'hoverIntent' ) );

	// Register theme assets.
	flatsome_register_asset( 'flatsome-relay', 'flatsome-relay', array( 'flatsome-js', 'jquery' ) );

	$sticky_height = get_theme_mod( 'header_height_sticky', 70 );

	if ( is_admin_bar_showing() ) {
		$sticky_height = $sticky_height + 30;
	}

	$lightbox_close_markup = apply_filters('flatsome_lightbox_close_button', '<button title="%title%" type="button" class="mfp-close"><svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-x"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></button>');

	$localize_data = array(
		'theme'              => array( 'version' => $version ),
		'ajaxurl'            => admin_url( 'admin-ajax.php' ),
		'rtl'                => is_rtl(),
		'sticky_height'      => $sticky_height, // Deprecated.
		'stickyHeaderHeight' => 0,
		'scrollPaddingTop'   => 0,
		'assets_url'         => $uri . '/assets/',
		'lightbox'           => array(
			'close_markup'     => $lightbox_close_markup,
			'close_btn_inside' => apply_filters( 'flatsome_lightbox_close_btn_inside', false ),
		),
		'user'               => array(
			'can_edit_pages' => current_user_can( 'edit_pages' ),
		),
		'i18n'               => array(
			'mainMenu'     => __( 'Main Menu', 'flatsome' ),
			'toggleButton' => __( 'Toggle', 'flatsome' ),
		),
		'options'            => array(
			'cookie_notice_version'          => get_theme_mod( 'cookie_notice_version', '1' ),
			'swatches_layout'                => get_theme_mod( 'swatches_layout' ),
			'swatches_disable_deselect'      => get_theme_mod( 'swatches_disable_deselect' ),
			'swatches_box_select_event'      => get_theme_mod( 'swatches_box_select_event' ),
			'swatches_box_behavior_selected' => get_theme_mod( 'swatches_box_behavior_selected' ),
			'swatches_box_update_urls'       => get_theme_mod( 'swatches_box_update_urls', '1' ),
			'swatches_box_reset'             => get_theme_mod( 'swatches_box_reset' ),
			'swatches_box_reset_limited'     => get_theme_mod( 'swatches_box_reset_limited' ),
			'swatches_box_reset_extent'      => get_theme_mod( 'swatches_box_reset_extent' ),
			'swatches_box_reset_time'        => get_theme_mod( 'swatches_box_reset_time', 300 ),
			'search_result_latency'          => get_theme_mod( 'search_result_latency', '0' ),
		),
	);

	if ( is_woocommerce_activated() ) {
		$wc_localize_data = array(
			'is_mini_cart_reveal' => flatsome_is_mini_cart_reveal(),
		);

		$localize_data = array_merge( $localize_data, $wc_localize_data );
	}

	// Add variables to scripts.
	wp_localize_script( 'flatsome-js', 'flatsomeVars', $localize_data );

	if ( apply_filters( 'experimental_flatsome_pjax_enabled', true ) ) {
		$pjax = apply_filters( 'experimental_flatsome_pjax', array(
			'selectors'           => array(),
			'elements'            => array( '#wrapper' ),
			'processing_elements' => array(),
			'scroll_to_top'       => get_theme_mod( 'pjax_scroll_to_top' ),
			'cache_bust'          => false,
			'timeout'             => 5000,
		) );

		foreach ( [ 'selectors', 'elements' ] as $key ) {
			if ( isset( $pjax[ $key ] ) ) {
				if ( ! is_array( $pjax[ $key ] ) ) {
					trigger_error( "Filter 'flatsome_pjax' expects an array as value for key '$key'. Defaulting to empty array." ); // phpcs:ignore
					$pjax[ $key ] = array();
					continue;
				}
				$pjax[ $key ] = array_filter( array_unique( $pjax[ $key ] ) );
			}
		}

		if ( ! empty( $pjax['selectors'] ) && ! empty( $pjax['elements'] ) ) {
			flatsome_enqueue_asset( 'flatsome-pjax', 'flatsome-pjax', array( 'flatsome-js', 'jquery' ) );
			wp_add_inline_script( 'flatsome-pjax', 'var flatsomePjax = ' . wp_json_encode( $pjax ), 'before' );
		}
	}

	if ( is_woocommerce_activated() ) {
		flatsome_enqueue_asset( 'flatsome-theme-woocommerce-js', 'woocommerce', array( 'flatsome-js', 'woocommerce' ) );
	}

	if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
		wp_enqueue_script( 'comment-reply' );
	}
}

add_action( 'wp_enqueue_scripts', 'flatsome_scripts', 100 );

/**
 * Set up UX Builder.
 */
function flatsome_ux_builder_setup() {
	// Add Ux Builder to post types.
	add_ux_builder_post_type( 'blocks' );
	add_ux_builder_post_type( 'product' );
	add_ux_builder_post_type( 'featured_item' );
}

add_action( 'init', 'flatsome_ux_builder_setup', 10 );

/**
 * Enqueue UX Builder scripts.
 *
 * @param  string $context Context is «editor» or content.
 */
function flatsome_ux_builder_scripts( $context ) {
	$uri     = get_template_directory_uri();
	$theme   = wp_get_theme( get_template() );
	$version = $theme->get( 'Version' );

	// Add UxBuilder assets.
	if ( $context == 'editor' ) {
		flatsome_enqueue_asset( 'ux-builder-flatsome', 'builder/custom/editor', array( 'ux-builder-core' ) );
		wp_enqueue_style( 'ux-builder-flatsome', $uri . '/assets/css/builder/custom/builder.css', array( 'ux-builder-core' ), $version );
	}
	if ( $context == 'content' ) {
		wp_enqueue_style( 'ux-builder-flatsome', $uri . '/assets/css/builder/custom/builder.css', null, $version );
		flatsome_enqueue_asset( 'ux-builder-flatsome', 'builder/custom/content', array(
			'flatsome-js',
			'flatsome-masonry-js',
		) );
	}
}

add_action( 'ux_builder_enqueue_scripts', 'flatsome_ux_builder_scripts', 10 );


if ( ! is_admin() && get_theme_mod( 'lazy_load_backgrounds', 1 ) ) {
	/**
	 * Lazy load backgrounds
	 */
	function flatsome_lazy_load_backgrounds_css() {
		echo '<style>.bg{opacity: 0; transition: opacity 1s; -webkit-transition: opacity 1s;} .bg-loaded{opacity: 1;}</style>';
	}

	add_filter( 'wp_head', 'flatsome_lazy_load_backgrounds_css' );
}

/**
 * Remove jQuery migrate.
 *
 * @param WP_Scripts $scripts WP_Scripts object.
 */
function flatsome_remove_jquery_migrate( $scripts ) {
	if ( ! get_theme_mod( 'jquery_migrate' ) ) return;
	if ( ! is_admin() && isset( $scripts->registered['jquery'] ) ) {
		$script = $scripts->registered['jquery'];

		if ( $script->deps ) { // Check whether the script has any dependencies.
			$script->deps = array_diff( $script->deps, array(
				'jquery-migrate',
			) );
		}
	}
}

add_action( 'wp_default_scripts', 'flatsome_remove_jquery_migrate' );

// Disable emoji scripts
if ( ! is_admin() && get_theme_mod( 'disable_emoji', 0 ) ) {
	remove_action('wp_head', 'print_emoji_detection_script', 7);
	remove_action('wp_print_styles', 'print_emoji_styles');
}

function flatsome_deregister_block_styles() {
	if ( ! is_admin() && get_theme_mod( 'disable_blockcss', 0 ) ) {
    wp_dequeue_style( 'wp-block-library' );
  }
}
add_action( 'wp_print_styles', 'flatsome_deregister_block_styles', 100 );

/**
 * Prefetch lazy-loaded chunks.
 */
function flatsome_prefetch_scripts( $urls, $type ) {
	static $manifest;

	$manifest_path = get_template_directory() . '/assets/manifest.json';
	$assets_url    = get_template_directory_uri() . '/assets';
	$theme         = wp_get_theme( get_template() );
	$version       = $theme->get( 'Version' );

	if ( empty( $manifest ) ) {
		if ( ! file_exists( $manifest_path ) ) {
			return $urls;
		}
		$manifest = wp_json_file_decode( $manifest_path, [ 'associative' => true ] );
	}

	$asset_handle_map = array(
		'js/flatsome'    => 'flatsome-js',
		'js/woocommerce' => 'flatsome-theme-woocommerce-js',
	);

	foreach ( $manifest as $key => $asset ) {
		if ( empty( $asset_handle_map[ $key ] ) ) continue;

		$handle = $asset_handle_map[ $key ];

		if ( wp_script_is( $handle, 'enqueued' ) ) {
			if ( $type === 'prefetch' ) {
				$script = wp_scripts()->registered[ $handle ];
				$urls[] = add_query_arg( 'ver', $script->ver, $script->src );
			}
			if ( ! empty( $asset[ $type ]['js'] ) ) {
				foreach ( $asset[ $type ]['js'] as $path ) {
					$urls[] = $assets_url . "/$path?ver=" . $version;
				}
			}
		}
	}
	return $urls;
}
add_filter( 'wp_resource_hints', 'flatsome_prefetch_scripts', 10, 2 );

/**
 * Add JSON to allowed file types.
 *
 * @param array $mimes Allowed file types.
 */
function flatsome_upload_mimes( $mimes ) {
	if ( ! isset( $mimes['json'] ) ) {
		$mimes['json'] = 'text/plain';
	}
	return $mimes;
}
add_filter( 'upload_mimes', 'flatsome_upload_mimes' );

/**
 * Configures Flatsome PJAX.
 *
 * If '$args['selectors'][]' or '$args['element'][]' array is empty, PJAX does not load & activate.
 *
 * @param array $args The original array of arguments provided by the 'flatsome_pjax' filter.
 *
 * @return array The modified array of arguments.
 */
function experimental_flatsome_pjax_config( $args ) {
	if ( get_theme_mod( 'blog_pagination' ) === 'ajax' ) {
		if ( flatsome_is_blog_archive() ) {
			$args['selectors'][]                       = '.page-numbers.nav-pagination:not(.ux-relay__pagination) li a';
			$args['processing_elements']['#post-list'] = [
				'style'    => 'spotlight',
				'position' => 'sticky',
			];
		}

		if ( is_single() && get_post_type() === 'post' ) {
			$args['selectors'][]                               = '.navigation-post a';
			$args['processing_elements']['.blog-single .post'] = [
				'style'    => 'spotlight',
				'position' => 'sticky',
			];
		}
	}

	if ( is_woocommerce_activated() ) {
		$is_shop_archive      = flatsome_is_shop_archive();
		$shop_ajax_pagination = get_theme_mod( 'shop_pagination' ) === 'ajax';

		if ( $shop_ajax_pagination && $is_shop_archive ) {
			$args['selectors'][] = '.woocommerce-pagination a';
		}

		if ( get_theme_mod( 'shop_filter_widgets_pjax' ) && $is_shop_archive ) {
			$args['selectors'][] = '.widget_layered_nav li';
			$args['selectors'][] = '.widget_rating_filter li';
			$args['selectors'][] = '.widget_layered_nav_filters li';
			$args['selectors'][] = '.widget_product_categories ul a';

			add_filter( 'body_class', function ( $classes ) {
				$classes[] = 'ux-shop-ajax-filters';

				return $classes;
			} );
		}

		if ( $is_shop_archive ) {
			$args['processing_elements']['.shop-container'] = [
				'style'    => 'spotlight',
				'position' => 'sticky',
			];
		}
	}

	return $args;
}

add_filter( 'experimental_flatsome_pjax', 'experimental_flatsome_pjax_config' );
CVARA – NHẬP KHẨU PHÁP – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG. - Giải pháp chăm sóc tại nhà Việt Nam

CVARA – NHẬP KHẨU PHÁP – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG.

390,000

CVARA – NHẬP KHẨU PHÁP – BỔ SUNG CALCI NANO VITAMIN D3 VÀ MK7 – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG.
CVARA – NHẬP KHẨU PHÁP – BỔ SUNG CALCI NANO VITAMIN D3 VÀ MK7 – GIÚP PHÁT TRIỂN CHIỀU CAO VÀ PHÒNG CHỐNG LOÃNG XƯƠNG

– Bổ sung Canxi nhằm hỗ trợ phát triển chiều cao cho thanh thiếu niên trong độ tuổi phát triển chiều cao, giúp xương chắc khỏe, phòng ngừa còi xương ở trẻ em

– Chống loãng xương, giúp phục hồi xương gãy, giảm đau lưng cho người lớn, ngăn chặn các hiện tượng thoái hóa, giòn xương do thiếu canxi trong máu, giúp cơ thể khỏe mạnh

– Giảm tình trạng viêm khớp, thoái hóa khớp. Cung cấp canxi, vitamin D3 cho phụ nữ có thai và cho con bú. Tăng cường và phát triển hệ xương ở thai nhi

– Giảm tê bì chân tay, chuột rút. Kết hợp hỗ trợ điều trị thiếu canxi huyết

CAM KẾT HÀNG CHÍNH HÃNG – GIÁ CẢ HỢP LÝ – TIẾT KIỆM 5-7% – GIAO HÀNG TOÀN QUỐC.