File: /home/thuexe247c/public_html/wp-content/themes/flatsome/inc/functions/function-global.php
<?php
/**
* Get the Flatsome instance.
*
* @return Flatsome
*/
function flatsome() {
return Flatsome::get_instance();
}
/**
* Get the Flatsome Envato instance.
*/
function flatsome_envato() {
return Flatsome_Envato::get_instance();
}
/**
* Register a webpack bundle.
*
* @param string $handle Script handle name.
* @param string $entrypoint The entrypoint name.
* @param array $dependencies Extra dependencies.
* @return void
*/
function flatsome_register_asset( $handle, $entrypoint, $dependencies = array() ) {
$filename = "js/$entrypoint.js";
$theme = wp_get_theme( get_template() );
$version = $theme->get( 'Version' );
$template_dir = get_template_directory();
$template_uri = get_template_directory_uri();
$assets_path = "$template_dir/assets/assets.php";
$script_url = "$template_uri/assets/$filename";
$assets = file_exists( $assets_path ) ? require $assets_path : array();
$script_asset = isset( $assets[ $filename ] )
? $assets[ $filename ]
: array( 'dependencies' => array(), 'version' => $version );
wp_register_script(
$handle,
$script_url,
array_merge( $script_asset['dependencies'], $dependencies ),
$script_asset['version'],
true
);
}
/**
* Enqueues a webpack bundle.
*
* @param string $handle Script handle name.
* @param string $entrypoint The entrypoint name.
* @param array $dependencies Extra dependencies.
* @return void
*/
function flatsome_enqueue_asset( $handle, $entrypoint, $dependencies = array() ) {
flatsome_register_asset( $handle, $entrypoint, $dependencies );
wp_enqueue_script( $handle );
}
/**
* Get Flatsome option
*
* @deprecated in favor of get_theme_mod()
*
* @return string
*/
function flatsome_option($option) {
// Get options
return get_theme_mod( $option, flatsome_defaults($option) );
}
if(!function_exists('flatsome_dummy_image')) {
function flatsome_dummy_image() {
return get_template_directory_uri().'/assets/img/missing.jpg';
}
}
/**
* Checks current WP version against a given version.
*
* @param string $version The version to check for.
*
* @return bool Returns true if WP version is equal or higher then given version.
*/
function flatsome_wp_version_check( $version = '5.4' ) {
global $wp_version;
if ( version_compare( $wp_version, $version, '>=' ) ) {
return true;
}
return false;
}
/* Check WooCommerce Version */
if( ! function_exists('fl_woocommerce_version_check') ){
function fl_woocommerce_version_check( $version = '2.6' ) {
if( version_compare( WC()->version, $version, ">=" ) ) {
return true;
}
return false;
}
}
/* Get Site URL shortcode */
if( ! function_exists( 'flatsome_site_path' ) ) {
function flatsome_site_path(){
return site_url();
}
}
add_shortcode('site_url', 'flatsome_site_path');
add_shortcode('site_url_secure', 'flatsome_site_path');
/* Get Year */
if( ! function_exists( 'flatsome_show_current_year' ) ) {
function flatsome_show_current_year(){
return date('Y');
}
}
add_shortcode('ux_current_year', 'flatsome_show_current_year');
function flatsome_get_post_type_items($post_type, $args_extended=array()) {
global $post;
$old_post = $post;
$return = false;
$args = array(
'post_type'=>$post_type
, 'post_status'=>'publish'
, 'showposts'=>-1
, 'order'=>'ASC'
, 'orderby'=>'title'
);
if ($args && count($args_extended)) {
$args = array_merge($args, $args_extended);
}
query_posts($args);
if (have_posts()) {
global $post;
$return = array();
while (have_posts()) {
the_post();
$return[get_the_ID()] = $post;
}
}
wp_reset_query();
$post = $old_post;
return $return;
}
function flatsome_is_request( $type ) {
switch ( $type ) {
case 'admin' :
return is_admin();
case 'ajax' :
return defined( 'DOING_AJAX' );
case 'frontend' :
return ( ! is_admin() || defined( 'DOING_AJAX' ) ) && ! defined( 'DOING_CRON' );
}
}
function flatsome_api_url() {
$api_url = 'https://flatsome-api.netlify.com';
if ( defined( 'FLATSOME_API_URL' ) && FLATSOME_API_URL ) {
$api_url = FLATSOME_API_URL;
}
return $api_url;
}
function flatsome_facebook_accounts() {
$theme_mod = get_theme_mod( 'facebook_accounts', array() );
return array_filter( $theme_mod, function ( $account ) {
return ! empty( $account ) && is_array( $account );
} );
}
/**
* Returns the current Facebook GraphAPI version beeing used.
*
* @since 3.13
*
* @return string
*/
function flatsome_facebook_api_version() {
return 'v14.0';
}
// Get block id by ID or slug.
function flatsome_get_block_id( $post_id ) {
global $wpdb;
if ( empty ( $post_id ) ) {
return null;
}
// Get post ID if using post_name as id attribute.
if ( ! is_numeric( $post_id ) ) {
$post_id = $wpdb->get_var(
$wpdb->prepare(
"SELECT ID FROM $wpdb->posts WHERE post_type = 'blocks' AND post_name = %s",
$post_id
)
);
}
// Polylang support.
if ( function_exists( 'pll_get_post' ) ) {
if ( $lang_id = pll_get_post( $post_id ) ) {
$post_id = $lang_id;
}
}
// WPML Support.
if ( function_exists( 'icl_object_id' ) ) {
if ( $lang_id = icl_object_id( $post_id, 'blocks', false, ICL_LANGUAGE_CODE ) ) {
$post_id = $lang_id;
}
}
return $post_id;
}
/**
* Retrieve a list of blocks.
*
* @param array|string $args Optional. Array or string of arguments.
*
* @return array|false List of blocks matching defaults or `$args`.
*/
function flatsome_get_block_list_by_id( $args = '' ) {
$defaults = array(
'option_none' => '',
);
$parsed_args = wp_parse_args( $args, $defaults );
$blocks = array();
if ( $parsed_args['option_none'] ) {
$blocks = array( 0 => $parsed_args['option_none'] );
}
$posts = flatsome_get_post_type_items( 'blocks' );
if ( $posts ) {
foreach ( $posts as $value ) {
$blocks[ $value->ID ] = $value->post_title;
}
}
return $blocks;
}
/**
* Retrieves a page given its title.
*
* @param string $page_title Page title.
* @param string $output Optional. The required return type. One of OBJECT, ARRAY_A, or ARRAY_N, which
* correspond to a WP_Post object, an associative array, or a numeric array,
* respectively. Default OBJECT.
* @param string|array $post_type Optional. Post type or array of post types. Default 'page'.
*
* @return WP_Post|array|null WP_Post (or array) on success, or null on failure.
*/
function flatsome_get_page_by_title( $page_title, $output = OBJECT, $post_type = 'page' ) {
$args = array(
'title' => $page_title,
'post_type' => $post_type,
'post_status' => get_post_stati(),
'posts_per_page' => 1,
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
'no_found_rows' => true,
'orderby' => 'post_date ID',
'order' => 'ASC',
);
$query = new WP_Query( $args );
$pages = $query->posts;
if ( empty( $pages ) ) {
return null;
}
return get_post( $pages[0], $output );
}
/**
* Calls a shortcode function by its tag name.
*
* @param string $tag The shortcode of the function to be called.
* @param array $atts The attributes to pass to the shortcode function (optional).
* @param array $content The content of the shortcode (optional).
*
* @return bool|string If a shortcode tag doesn't exist => false, if exists => the result of the shortcode.
*/
function flatsome_apply_shortcode( $tag, $atts = array(), $content = null ) {
global $shortcode_tags;
if ( ! isset( $shortcode_tags[ $tag ] ) ) return false;
return call_user_func( $shortcode_tags[ $tag ], $atts, $content, $tag );
}
/**
* Hides characters in a string.
*
* @param string $string The token.
* @param int $visible_chars How many characters to show.
* @return string
*/
function flatsome_hide_chars( $string, $visible_chars = 4 ) {
if ( ! is_string( $string ) ) {
$string = '';
}
if ( strlen( $string ) <= $visible_chars ) {
$visible_chars = strlen( $string ) - 2;
}
$chars = str_split( $string );
$end = strlen( $string ) - $visible_chars;
for ( $i = $visible_chars; $i < $end; $i++ ) {
if ( $chars[ $i ] === '-' ) continue;
$chars[ $i ] = '*';
}
return implode( '', $chars );
}
/**
* Normalizes the theme directory name.
*
* @param string $slug Optional theme slug.
* @return string
*/
function flatsome_theme_key( $slug = null ) {
if ( empty( $slug ) ) {
$slug = basename( get_template_directory() );
}
$slug = trim( $slug );
$slug = preg_replace( '/[,.\s]+/', '-', $slug );
$slug = strtolower( $slug );
return $slug;
}
/**
* Callback to sort on priority.
*
* @param int $a First item.
* @param int $b Second item.
*
* @return bool
*/
function flatsome_sort_on_priority( $a, $b ) {
if ( ! isset( $a['priority'], $b['priority'] ) ) {
return - 1;
}
if ( $a['priority'] === $b['priority'] ) {
return 0;
}
return $a['priority'] < $b['priority'] ? - 1 : 1;
}
/**
* Clean variables using sanitize_text_field. Arrays are cleaned recursively.
* Non-scalar values are ignored.
*
* @param string|array $data Data to sanitize.
*
* @return string|array
* @see wc_clean()
*/
function flatsome_clean( $data ) {
if ( is_array( $data ) ) {
return array_map( 'flatsome_clean', $data );
} else {
return is_scalar( $data ) ? sanitize_text_field( $data ) : $data;
}
}
/**
* Retrieves the directory path for the theme uploaded fonts.
*
* @return string The directory path for the theme uploaded fonts.
*/
function flatsome_get_fonts_dir() {
return WP_CONTENT_DIR . '/fonts';
}
/**
* Check if support is expired.
*
* @return bool
*/
function flatsome_is_support_expired() {
// _deprecated_function( __FUNCTION__, '3.14' );
return true;
}
/**
* Check if support time is invalid.
*
* @param string $support_ends Support end timestamp.
*
* @return bool True if invalid false otherwise.
*/
function flatsome_is_invalid_support_time( $support_ends ) {
// _deprecated_function( __FUNCTION__, '3.14' );
return false;
}
/**
* Checks whether theme is registered.
*
* @return bool
*/
function flatsome_is_theme_enabled() {
return flatsome_envato()->registration->is_registered();
}
/**
* Flatsome Payment Icons List.
*
* Returns a list of Flatsome Payment Icons.
*
* @return array Payment Icons list.
*/
function flatsome_get_payment_icons_list() {
return apply_filters( 'flatsome_payment_icons', array(
'amazon' => __( 'Amazon', 'flatsome-admin' ),
'americanexpress' => __( 'American Express', 'flatsome-admin' ),
'applepay' => __( 'Apple Pay', 'flatsome-admin' ),
'afterpay' => __( 'AfterPay', 'flatsome-admin' ),
'afterpay-2' => __( 'AfterPay 2', 'flatsome-admin' ),
'alipay' => __( 'Alipay', 'flatsome-admin' ),
'atm' => __( 'Atm', 'flatsome-admin' ),
'bancontact' => __( 'Bancontact', 'flatsome-admin' ),
'bankomat' => __( 'Bankomat', 'flatsome-admin' ),
'banktransfer' => __( 'Bank Transfer', 'flatsome-admin' ),
'belfius' => __( 'Belfius', 'flatsome-admin' ),
'bitcoin' => __( 'BitCoin', 'flatsome-admin' ),
'braintree' => __( 'Braintree', 'flatsome-admin' ),
'cartasi' => __( 'CartaSi', 'flatsome-admin' ),
'cashcloud' => __( 'CashCloud', 'flatsome-admin' ),
'cashondelivery' => __( 'Cash On Delivery', 'flatsome-admin' ),
'cashonpickup' => __( 'Cash on Pickup', 'flatsome-admin' ),
'cbc' => __( 'CBC', 'flatsome-admin' ),
'cirrus' => __( 'Cirrus', 'flatsome-admin' ),
'clickandbuy' => __( 'Click and Buy', 'flatsome-admin' ),
'creditcard' => __( 'Credit Card', 'flatsome-admin' ),
'creditcard2' => __( 'Credit Card 2', 'flatsome-admin' ),
'dancard' => __( 'DanKort', 'flatsome-admin' ),
'dinnersclub' => __( 'Dinners Club', 'flatsome-admin' ),
'discover' => __( 'Discover', 'flatsome-admin' ),
'elo' => __( 'Elo', 'flatsome-admin' ),
'eps' => __( 'Eps', 'flatsome-admin' ),
'facture' => __( 'Facture', 'flatsome-admin' ),
'fattura' => __( 'Fattura', 'flatsome-admin' ),
'flattr' => __( 'Flattr', 'flatsome-admin' ),
'giropay' => __( 'GiroPay', 'flatsome-admin' ),
'googlepay' => __( 'Google Pay', 'flatsome-admin' ),
'googlewallet' => __( 'Google Wallet', 'flatsome-admin' ), // Deprecated, changed to Google Pay.
'hiper' => __( 'Hiper', 'flatsome-admin' ),
'ideal' => __( 'IDeal', 'flatsome-admin' ),
'interac' => __( 'Interac', 'flatsome-admin' ),
'invoice' => __( 'Invoice', 'flatsome-admin' ),
'jcb' => __( 'JCB', 'flatsome-admin' ),
'kbc' => __( 'KBC', 'flatsome-admin' ),
'klarna' => __( 'Klarna', 'flatsome-admin' ),
'maestro' => __( 'Maestro', 'flatsome-admin' ),
'mastercard' => __( 'MasterCard', 'flatsome-admin' ),
'mastercard-2' => __( 'MasterCard 2', 'flatsome-admin' ),
'mir' => __( 'Mir', 'flatsome-admin' ),
'moip' => __( 'Moip', 'flatsome-admin' ),
'mollie' => __( 'Mollie', 'flatsome-admin' ),
'ogone' => __( 'Ogone', 'flatsome-admin' ),
'paybox' => __( 'Paybox', 'flatsome-admin' ),
'paylife' => __( 'Paylife', 'flatsome-admin' ),
'paymill' => __( 'PayMill', 'flatsome-admin' ),
'paypal' => __( 'PayPal', 'flatsome-admin' ),
'paypal-2' => __( 'PayPal 2', 'flatsome-admin' ),
'paysafe' => __( 'PaySafe', 'flatsome-admin' ),
'paysera' => __( 'Paysera', 'flatsome-admin' ),
'payshop' => __( 'PayShop', 'flatsome-admin' ),
'paytm' => __( 'Paytm', 'flatsome-admin' ),
'payu' => __( 'PayU', 'flatsome-admin' ),
'postepay' => __( 'Postepay', 'flatsome-admin' ),
'quick' => __( 'Quick', 'flatsome-admin' ),
'rechung' => __( 'Rechung', 'flatsome-admin' ),
'revolut' => __( 'Revolut', 'flatsome-admin' ),
'ripple' => __( 'Ripple', 'flatsome-admin' ),
'rupay' => __( 'RuPay', 'flatsome-admin' ),
'sage' => __( 'Sage', 'flatsome-admin' ),
'sepa' => __( 'Sepa', 'flatsome-admin' ),
'six' => __( 'Six', 'flatsome-admin' ),
'skrill' => __( 'Skrill', 'flatsome-admin' ),
'sofort' => __( 'Sofort', 'flatsome-admin' ),
'square' => __( 'Square', 'flatsome-admin' ),
'stripe' => __( 'Stripe', 'flatsome-admin' ),
'swish' => __( 'Swish (SE)', 'flatsome-admin' ),
'truste' => __( 'Truste', 'flatsome-admin' ),
'twint' => __( 'Twint', 'flatsome-admin' ),
'unionpay' => __( 'UnionPay', 'flatsome-admin' ),
'venmo' => __( 'Venmo', 'flatsome-admin' ),
'verisign' => __( 'VeriSign', 'flatsome-admin' ),
'vipps' => __( 'Vipps', 'flatsome-admin' ),
'visa' => __( 'Visa', 'flatsome-admin' ),
'visa1' => __( 'Visa 2', 'flatsome-admin' ),
'visaelectron' => __( 'Visa Electron', 'flatsome-admin' ),
'westernunion' => __( 'Western Union', 'flatsome-admin' ),
'wirecard' => __( 'Wirecard', 'flatsome-admin' ),
) );
}
/**
* Get an HTML img element representing an image attachment
*
* @uses wp_get_attachment_image()
*
* @param int $attachment_id Image attachment ID.
* @param string|int[] $size Optional. Image size. Accepts any registered image size name, or an array
* of width and height values in pixels (in that order). Default 'thumbnail'.
* @param bool $icon Optional. Whether the image should be treated as an icon. Default false.
* @param string|array $attr {
* Optional. Attributes for the image markup.
*
* @type string $src Image attachment URL.
* @type string $class CSS class name or space-separated list of classes.
* Default `attachment-$size_class size-$size_class`,
* where `$size_class` is the image size being requested.
* @type string $alt Image description for the alt attribute.
* @type string $srcset The 'srcset' attribute value.
* @type string $sizes The 'sizes' attribute value.
* @type string|false $loading The 'loading' attribute value. Passing a value of false
* will result in the attribute being omitted for the image.
* Defaults to 'lazy', depending on wp_lazy_loading_enabled().
* @type string $decoding The 'decoding' attribute value. Possible values are
* 'async' (default), 'sync', or 'auto'. Passing false or an empty
* string will result in the attribute being omitted.
* }
* @return string HTML img element or empty string on failure.
*/
function flatsome_get_attachment_image_no_srcset( $attachment_id, $size = 'thumbnail', $icon = false, $attr = '' ) {
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );
$html = wp_get_attachment_image( $attachment_id, $size, $icon, $attr );
remove_filter( 'wp_calculate_image_srcset_meta', '__return_null' );
return $html;
}