├── screenshot.png ├── assets ├── img │ ├── logo.png │ ├── logo_bg.png │ └── breadcrumb.jpg ├── fonts │ ├── Flaticon.eot │ ├── Flaticon.ttf │ ├── themify.eot │ ├── themify.ttf │ ├── themify.woff │ ├── Flaticon.woff │ ├── Flaticon.woff2 │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 ├── css │ ├── fitfloss-admin.css │ ├── owl.carousel.min.css │ ├── nice-select.css │ ├── magnific-popup.css │ └── elementor-default-element-style.css └── js │ ├── fitfloss-admin.js │ ├── custom.js │ ├── post-likes.js │ ├── jquery.instagramFeed.min.js │ ├── fitfloss-elementor-notice.js │ └── jquery.ajaxchimp.min.js ├── .gitmodules ├── template-builder.php ├── templates ├── pagination.php ├── content-page.php ├── footer-widgets.php ├── biography.php ├── footer-instagram.php ├── footer-reservation.php ├── content-audio.php ├── content-video.php ├── footer-bottom.php ├── content-none.php ├── 404.php ├── header-bottom.php ├── content.php ├── header-top.php └── content-single.php ├── sidebar-page.php ├── 404.php ├── sidebar.php ├── footer.php ├── searchform.php ├── inc ├── shortcode.php ├── class-epsilon-dashboard-autoloader.php ├── fitfloss-widgets-reg.php ├── wp_bootstrap_pagination.php ├── libraries │ └── class-epsilon-init-notify-system.php ├── customizer │ ├── customizer.php │ ├── fields │ │ ├── sections.php │ │ └── fields.php │ └── js │ │ └── customizer.js ├── hooks │ ├── hooks.php │ └── hooks-functions.php ├── classes │ ├── Class-Enqueue.php │ └── Class-Config.php ├── support-functions.php ├── class-epsilon-init-dashboard.php ├── fitfloss-breadcrumbs.php ├── wp-html-helper.php ├── wp_bootstrap_navwalker.php └── post-like.php ├── header.php ├── style.css ├── page.php ├── single.php ├── index.php ├── search.php ├── readme.txt ├── archive.php ├── single-course.php ├── comments.php └── functions.php /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/screenshot.png -------------------------------------------------------------------------------- /assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/img/logo.png -------------------------------------------------------------------------------- /assets/img/logo_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/img/logo_bg.png -------------------------------------------------------------------------------- /assets/fonts/Flaticon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/Flaticon.eot -------------------------------------------------------------------------------- /assets/fonts/Flaticon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/Flaticon.ttf -------------------------------------------------------------------------------- /assets/fonts/themify.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/themify.eot -------------------------------------------------------------------------------- /assets/fonts/themify.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/themify.ttf -------------------------------------------------------------------------------- /assets/fonts/themify.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/themify.woff -------------------------------------------------------------------------------- /assets/img/breadcrumb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/img/breadcrumb.jpg -------------------------------------------------------------------------------- /assets/fonts/Flaticon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/Flaticon.woff -------------------------------------------------------------------------------- /assets/fonts/Flaticon.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/Flaticon.woff2 -------------------------------------------------------------------------------- /assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /assets/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ColorlibHQ/fitfloss-theme/master/assets/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "inc/libraries/epsilon-theme-dashboard"] 2 | path = inc/libraries/epsilon-theme-dashboard 3 | url = https://github.com/MachoThemes/epsilon-theme-dashboard 4 | [submodule "inc/libraries/epsilon-framework"] 5 | path = inc/libraries/epsilon-framework 6 | url = https://github.com/MachoThemes/epsilon-framework 7 | -------------------------------------------------------------------------------- /template-builder.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/pagination.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sidebar-page.php: -------------------------------------------------------------------------------- 1 | '; 18 | dynamic_sidebar( 'fitfloss-page-sidebar' ); 19 | echo ''; 20 | } 21 | 22 | 23 | ?> -------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sidebar.php: -------------------------------------------------------------------------------- 1 |
'; 18 | dynamic_sidebar( 'fitfloss-post-sidebar' ); 19 | echo '
'; 20 | } 21 | 22 | 23 | ?> -------------------------------------------------------------------------------- /footer.php: -------------------------------------------------------------------------------- 1 | 31 | 32 | -------------------------------------------------------------------------------- /templates/content-page.php: -------------------------------------------------------------------------------- 1 | 17 |
18 |
> 19 | 33 |
34 |
-------------------------------------------------------------------------------- /assets/css/fitfloss-admin.css: -------------------------------------------------------------------------------- 1 | .epsilon-dashboard-tab .row .col { 2 | background-color: #fff; 3 | min-width: 29% !important; 4 | margin-left: 6px; 5 | margin-right: 6px; 6 | padding: 12px; 7 | } 8 | .epsilon-dashboard-tab .standout { 9 | padding: 40px !important; 10 | } 11 | #epsilon-demo.epsilon-dashboard-tab .row .epsilon-demo-box.col, 12 | #epsilon-demos .row .epsilon-demo-box.col { 13 | background-color: transparent; 14 | min-width: 159px !important; 15 | width: 155px !important; 16 | } 17 | .epsilon-dashboard-container--tabs nav a.active { 18 | border-bottom-color: #0073aa; 19 | background-color: #222; 20 | color: #fff !important; 21 | } 22 | .epsilon-dashboard-container--tabs nav a { 23 | background-color: #fff; 24 | } 25 | .dashicons-admin-tools:before{ 26 | content: "\f102"; 27 | } -------------------------------------------------------------------------------- /templates/footer-widgets.php: -------------------------------------------------------------------------------- 1 | 16 |
17 | 32 |
33 | 15 | 16 |
17 |
18 |
19 | 20 |
21 | 22 |
23 |
24 |
25 | 26 |
-------------------------------------------------------------------------------- /templates/biography.php: -------------------------------------------------------------------------------- 1 | 18 |
19 |
20 | 25 |
26 |

27 |

28 |
29 |
30 |
-------------------------------------------------------------------------------- /templates/footer-instagram.php: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 |
20 | -------------------------------------------------------------------------------- /inc/shortcode.php: -------------------------------------------------------------------------------- 1 |
2 |
3 | [date* checkin-date min:2019-11-01 max:2099-12-30 id:datepicker class:form-control placeholder "Checkin Date"] 4 |
5 |
6 | [date* checkout-date min:2019-11-01 max:2099-12-30 id:datepicker2 class:form-control placeholder "Checkout Date"] 7 |
8 |
9 | [select* menu-adult id:default-select class:form-select class:wide "Adult - 1" "Adult - 2" "Adult - 3" "Adult - 4"] 10 |
11 |
12 | [select* menu-children id:default-select class:form-select class:wide "Child - 1" "Child - 2" "Child - 3" "Child - 4"] 13 |
14 |
15 | [select* menu-children id:default-select class:form-select class:wide "Laxaries Rooms" "Deluxe Room" "Signature Room" "Couple Room"] 16 |
17 |
18 | [submit class:boxed-btn3 "Check Availability"] 19 |
20 |
-------------------------------------------------------------------------------- /header.php: -------------------------------------------------------------------------------- 1 | 2 | > 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | > 14 | 15 | 16 | 17 | 17 | 18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |

27 |
28 |
29 |
30 |
31 | 32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | -------------------------------------------------------------------------------- /templates/content-audio.php: -------------------------------------------------------------------------------- 1 | 17 | 18 |
> 19 |
20 | 62 |
63 |
-------------------------------------------------------------------------------- /templates/content-video.php: -------------------------------------------------------------------------------- 1 | 17 | 18 |
> 19 |
20 | 62 |
63 |
-------------------------------------------------------------------------------- /templates/footer-bottom.php: -------------------------------------------------------------------------------- 1 | ', '', date( 'Y' ) ); 7 | $copyRight = !empty( fitfloss_opt( 'fitfloss_footer_copyright_text' ) ) ? fitfloss_opt( 'fitfloss_footer_copyright_text' ) : $copyText; 8 | ?> 9 | 10 |
11 |
12 | 34 |
35 |
-------------------------------------------------------------------------------- /assets/js/custom.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | "use strict"; 3 | 4 | $('.single_gallery_part, .img-pop-up').magnificPopup({ 5 | type: 'image', 6 | gallery:{ 7 | enabled:true 8 | } 9 | }); 10 | 11 | var review = $('.client_review_iner'); 12 | if (review.length) { 13 | review.owlCarousel({ 14 | items: 3, 15 | loop: true, 16 | dots: true, 17 | autoplay: true, 18 | autoplayHoverPause: true, 19 | autoplayTimeout: 5000, 20 | nav: false, 21 | margin: 30, 22 | responsiveClass:true, 23 | responsive:{ 24 | 0:{ 25 | items:1, 26 | }, 27 | 576:{ 28 | items:2, 29 | }, 30 | 991:{ 31 | items:3, 32 | } 33 | } 34 | }); 35 | } 36 | //------- Mailchimp js --------// 37 | function mailChimp() { 38 | $('#mc_embed_signup').find('form').ajaxChimp(); 39 | } 40 | mailChimp(); 41 | 42 | // $(document).ready(function() { 43 | // $('select').niceSelect(); 44 | // }); 45 | // // menu fixed js code 46 | $(window).scroll(function () { 47 | var window_top = $(window).scrollTop() + 1; 48 | if (window_top > 50) { 49 | $('.main_menu').addClass('menu_fixed animated fadeInDown'); 50 | } else { 51 | $('.main_menu').removeClass('menu_fixed animated fadeInDown'); 52 | } 53 | }); 54 | 55 | // $('.counter').counterUp({ 56 | // time: 2000 57 | // }); 58 | 59 | }(jQuery)); -------------------------------------------------------------------------------- /templates/content-none.php: -------------------------------------------------------------------------------- 1 | 14 |
15 |

16 | 17 | 18 | 19 |

Get started here.', 'fitfloss' ), esc_url( admin_url( 'post-new.php' ) ) ); ?>

20 | 21 | 22 | 23 |

24 | 38 | 39 | 40 | 41 |

42 | 43 | 44 | 45 |
46 | -------------------------------------------------------------------------------- /templates/404.php: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 |
19 |
20 |
21 |
22 | '.esc_html( $errorText ).''; 29 | 30 | // Wrong text block 31 | $wrongText = wp_kses_post( __( 'Either something went wrong or the page dosen’t exist anymore.', 'fitfloss' ) ); 32 | 33 | if( fitfloss_opt('fitfloss_fof_titletwo') ){ 34 | $wrongText = fitfloss_opt('fitfloss_fof_titletwo'); 35 | } 36 | 37 | $anchor = fitfloss_anchor_tag( 38 | array( 39 | 'url' => esc_url( site_url( '/' ) ), 40 | 'text' => esc_html__( 'Go To Home page', 'fitfloss' ), 41 | 'class' => 'button-contactForm btn_1 boxed-btn' 42 | ) 43 | ); 44 | 45 | echo fitfloss_paragraph_tag( 46 | array( 47 | 'text' => esc_html( $wrongText ) 48 | ) 49 | ); 50 | 51 | echo wp_kses_post( $anchor ); 52 | ?> 53 |
54 |
55 |
56 |
57 |
-------------------------------------------------------------------------------- /assets/js/post-likes.js: -------------------------------------------------------------------------------- 1 | (function( $ ) { 2 | 'use strict'; 3 | $(document).on('click', '.sl-button', function() { 4 | var button = $(this); 5 | var post_id = button.attr('data-post-id'); 6 | var fitfloss = button.attr('data-nonce'); 7 | var iscomment = button.attr('data-iscomment'); 8 | var allbuttons; 9 | if ( iscomment === '1' ) { /* Comments can have same id */ 10 | allbuttons = $('.sl-comment-button-'+post_id); 11 | } else { 12 | allbuttons = $('.sl-button-'+post_id); 13 | } 14 | var loader = allbuttons.next('#sl-loader'); 15 | if (post_id !== '') { 16 | $.ajax({ 17 | type: 'POST', 18 | url: simpleLikes.ajaxurl, 19 | data : { 20 | action : 'fitfloss_process_simple_like', 21 | post_id : post_id, 22 | nonce : fitfloss, 23 | is_comment : iscomment, 24 | }, 25 | beforeSend:function(){ 26 | loader.html(' 
Loading...
'); 27 | }, 28 | success: function(response){ 29 | var icon = response.icon; 30 | var customIcon = button.prev(); 31 | var count = response.count; 32 | allbuttons.html(count); 33 | if(response.status === 'unliked') { 34 | var like_text = simpleLikes.like; 35 | allbuttons.prop('title', like_text); 36 | allbuttons.removeClass('liked'); 37 | if( customIcon.hasClass( 'fa-heart' )){ 38 | customIcon.removeClass('fa-heart'); 39 | } 40 | customIcon.addClass('fa-heart-o'); 41 | } else { 42 | var unlike_text = simpleLikes.unlike; 43 | allbuttons.prop('title', unlike_text); 44 | allbuttons.addClass('liked'); 45 | if( customIcon.hasClass( 'fa-heart-o' )){ 46 | customIcon.removeClass('fa-heart-o'); 47 | } 48 | customIcon.addClass('fa-heart'); 49 | } 50 | loader.empty(); 51 | } 52 | }); 53 | 54 | } 55 | return false; 56 | }); 57 | })( jQuery ); 58 | -------------------------------------------------------------------------------- /inc/class-epsilon-dashboard-autoloader.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /single.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/header-bottom.php: -------------------------------------------------------------------------------- 1 | 19 | 20 |
> 21 |
22 |
23 | 55 |
56 |
57 |
-------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Fitfloss === 2 | Contributors: colorlib 3 | Tags: custom-header, custom-menu, featured-image-header, featured-images, full-width-template, translation-ready 4 | Requires at least: 5.2 5 | Tested up to: 5.5.1 6 | 7 | == Description == 8 | Fitfloss is a clean, simple, responsive and customizable WordPress theme that looks awesome on any device. For a quick launch of a page to showcases your works, your talents and your services, apredefined theme is a wise decision to make. Fitfloss has it all in store for you to easily and effortlessly engineer an appealing page to attract new clients and seal new business deals. 9 | 10 | 11 | = License = 12 | Fitfloss WordPress theme, Copyright (C) 2018 Colorlib.com 13 | Fitfloss WordPress theme is licensed under the GPL2. 14 | 15 | Unless otherwise specified, all the theme files, scripts and images are licensed under GNU General Public License. 16 | The exceptions to this license are as follows: 17 | 18 | Images: 19 | - theme screenshot: custom work created by Colorlib.com and released under GPLv2 20 | 21 | * Bootstrap v4.1.1 (http://getbootstrap.com) 22 | Copyright 2011-2018 Twitter, Inc. 23 | Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 24 | 25 | * Animate CSS (https://daneden.github.io/animate.css/) 26 | Licensed under MIT (https://github.com/daneden/animate.css/blob/master/LICENSE) 27 | 28 | * Font Awesome 29 | License: SIL OFL 1.1 30 | URL: http://scripts.sil.org/OFL 31 | 32 | * Google Fonts: 33 | License: SIL OFL 1.1 34 | URL: http://scripts.sil.org/OFL 35 | 36 | * PopperJS (https://github.com/FezVrasta/popper.js) 37 | Copyright © 2016-2018 Federico Zivolo 38 | License: MIT 39 | URL: https://github.com/FezVrasta/popper.js/blob/master/LICENSE.md 40 | 41 | *ScrollUpJS (http://markgoodyear.com/labs/scrollup/) 42 | Copyright (c) Mark Goodyear — @markgdyr — http://markgoodyear.com 43 | License: MIT 44 | URL: http://markgoodyear.com/labs/scrollup/ 45 | 46 | *wowJS (https://github.com/graingert/wow) 47 | URL: https://wowjs.uk 48 | Copyright (c) 2016 - 2018 Thomas Grainger 49 | License: MIT 50 | -------------------------------------------------------------------------------- /templates/content.php: -------------------------------------------------------------------------------- 1 | 17 | 18 |
> 19 | 96 |
-------------------------------------------------------------------------------- /templates/header-top.php: -------------------------------------------------------------------------------- 1 | 2 | 40 | -------------------------------------------------------------------------------- /inc/fitfloss-widgets-reg.php: -------------------------------------------------------------------------------- 1 | esc_html__( 'Sidebar', 'fitfloss' ), 20 | 'id' => 'fitfloss-post-sidebar', 21 | 'before_widget' => '
', 22 | 'after_widget' => '
', 23 | 'before_title' => '

', 24 | 'after_title' => '

', 25 | ) ); 26 | 27 | // footer widgets register 28 | register_sidebar( array( 29 | 'name' => esc_html__( 'Footer One', 'fitfloss' ), 30 | 'id' => 'footer-1', 31 | 'before_widget' => '
', 33 | 'before_title' => '

', 34 | 'after_title' => '

', 35 | ) ); 36 | register_sidebar( array( 37 | 'name' => esc_html__( 'Footer Two', 'fitfloss' ), 38 | 'id' => 'footer-2', 39 | 'before_widget' => '
', 41 | 'before_title' => '

', 42 | 'after_title' => '

', 43 | ) ); 44 | register_sidebar( array( 45 | 'name' => esc_html__( 'Footer Three', 'fitfloss' ), 46 | 'id' => 'footer-3', 47 | 'before_widget' => '
', 49 | 'before_title' => '

', 50 | 'after_title' => '

', 51 | ) ); 52 | 53 | } 54 | add_action( 'widgets_init', 'fitfloss_widgets_init' ); 55 | -------------------------------------------------------------------------------- /assets/js/jquery.instagramFeed.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jquery.instagramFeed 3 | * 4 | * @version 1.0 5 | * 6 | * @author Javier Sanahuja Liebana 7 | * 8 | * https://github.com/BanNsS1/jquery.instagramFeed 9 | * 10 | */ 11 | (function(e){var l={username:"",container:"",display_profile:!0,display_biography:!0,display_gallery:!0,get_raw_json:!1,callback:null,styling:!0,items:8,items_per_row:4,margin:.5};e.instagramFeed=function(b){b=e.fn.extend({},l,b);""==b.username&&""==b.tag?console.log("Instagram Feed: Error, no username or tag found."):b.get_raw_json||""!=b.container?b.get_raw_json&&null==b.callback?console.log("Instagram Feed: Error, no callback defined to get the raw json"):e.get("https://www.instagram.com/"+b.username, 12 | function(a){a=a.split("window._sharedData = ");a=a[1].split("\x3c/script>");a=a[0];a=a.substr(0,a.length-1);a=JSON.parse(a);a=a.entry_data.ProfilePage[0].graphql.user;if(b.get_raw_json)b.callback(JSON.stringify({id:a.id,username:a.username,full_name:a.full_name,is_private:a.is_private,is_verified:a.is_verified,biography:a.biography,followed_by:a.edge_followed_by.count,following:a.edge_follow.count,images:a.edge_owner_to_timeline_media.edges}));else{var d="",f="",g="",h="",k="";b.styling&&(d=" style='text-align:center;'", 13 | f=" style='border-radius:10em;width:15%;max-width:125px;min-width:50px;'",g=" style='font-size:1.2em;'",h=" style='font-size:1em;'",k=" style='margin:"+b.margin+"% "+b.margin+"%;width:"+(100-2*b.margin*b.items_per_row)/b.items_per_row+"%;float:left;'");var c="";b.display_profile&&(c=c+("
")+("\t"+b.username+" profile pic"),c+="\t

@"+a.full_name+" (@"+b.username+")

");b.display_biography&&(c+="\t

"+a.biography+"

");b.display_profile&&(c+="
");if(b.display_gallery)if(a.is_private)c+="

This profile is private

";else{a=a.edge_owner_to_timeline_media.edges;max=a.length>b.items?b.items:a.length;c+=""}e(b.container).html(c)}}):console.log("Instagram Feed: Error, no container found.")}})(jQuery); -------------------------------------------------------------------------------- /inc/wp_bootstrap_pagination.php: -------------------------------------------------------------------------------- 1 | 4, 20 | 'custom_query' => FALSE, 21 | 'previous_string' => esc_html__( '«', 'fitfloss' ), 22 | 'next_string' => esc_html__( '»', 'fitfloss' ), 23 | 'before_output' => '
' 25 | ); 26 | 27 | $args = wp_parse_args( 28 | $args, 29 | apply_filters( 'fitfloss_pagination_defaults', $defaults ) 30 | ); 31 | 32 | $args['range'] = (int) $args['range'] - 1; 33 | if ( !$args['custom_query'] ) 34 | $args['custom_query'] = isset( $GLOBALS['wp_query'] ) ? $GLOBALS['wp_query'] : ''; 35 | $count = (int) $args['custom_query']->max_num_pages; 36 | $page = intval( get_query_var( 'paged' ) ); 37 | $ceil = ceil( $args['range'] / 2 ); 38 | 39 | if ( $count <= 1 ) 40 | return FALSE; 41 | 42 | if ( !$page ) 43 | $page = 1; 44 | 45 | if ( $count > $args['range'] ) { 46 | if ( $page <= $args['range'] ) { 47 | $min = 1; 48 | $max = $args['range'] + 1; 49 | } elseif ( $page >= ($count - $ceil) ) { 50 | $min = $count - $args['range']; 51 | $max = $count; 52 | } elseif ( $page >= $args['range'] && $page < ($count - $ceil) ) { 53 | $min = $page - $ceil; 54 | $max = $page + $ceil; 55 | } 56 | } else { 57 | $min = 1; 58 | $max = $count; 59 | } 60 | 61 | $echo = ''; 62 | 63 | 64 | if ( !empty($min) && !empty($max) ) { 65 | for( $i = $min; $i <= $max; $i++ ) { 66 | if ( $page == $i ) { 67 | $echo .= '
  • ' . str_pad( (int)$i, 1, '0', STR_PAD_LEFT ) . '.
  • '; 68 | } else { 69 | $echo .= sprintf( '
  • %2d.
  • ', esc_attr( get_pagenum_link($i) ), $i ); 70 | } 71 | } 72 | } 73 | 74 | 75 | if ( isset($echo) ) 76 | echo wp_kses_post( $args['before_output'] . $echo . $args['after_output'] ); 77 | } 78 | -------------------------------------------------------------------------------- /assets/js/fitfloss-elementor-notice.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Notice for Elementor 3 | * 4 | * @package Fitfloss 5 | */ 6 | 7 | /* global fitflossElementorNotice */ 8 | 9 | jQuery( document ).ready( 10 | function () { 11 | 12 | var style = ''; 13 | 14 | var dialog = style + '
    ' + 15 | '
    ' + 16 | '
    Fitfloss supports default styling for Elementor widgets
    ' + 17 | '
    Do you want to disable Elementors\' default styles and use the theme defaults?
    ' + 18 | '
    ' + 19 | 'No' + 20 | 'Yes' + 21 | '
    ' + 22 | '
    ' + 23 | '
    '; 24 | 25 | jQuery( 'body' ).prepend( dialog ); 26 | jQuery( '.fitfloss-elementor-notice-buttons > a' ).on( 27 | 'click', function() { 28 | 29 | var reply = jQuery( this ).data( 'reply' ); 30 | 31 | jQuery.ajax( 32 | { 33 | url: fitflossElementorNotice.ajaxurl, 34 | data: { 35 | reply: reply, 36 | nonce: fitflossElementorNotice.nonce, 37 | action: 'elementor_desiable_default_style' 38 | }, 39 | type: 'post', 40 | success: function () { 41 | 42 | if ( reply === 'yes' ) { 43 | parent.location.reload(); 44 | } else { 45 | jQuery( '.fitfloss-disable-elementor-styling' ).fadeOut( 500, function() { jQuery( this ).remove(); } ); 46 | } 47 | } 48 | } 49 | ); 50 | } 51 | ); 52 | } 53 | ); 54 | -------------------------------------------------------------------------------- /archive.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/content-single.php: -------------------------------------------------------------------------------- 1 | 15 | 16 |
    > 17 |
    18 | 106 |
    107 | 115 |
    -------------------------------------------------------------------------------- /inc/libraries/class-epsilon-init-notify-system.php: -------------------------------------------------------------------------------- 1 | Epsilon_Notify_System::check_plugin_is_installed( $slug ), 44 | 'active' => Epsilon_Notify_System::check_plugin_is_active( $slug ), 45 | ); 46 | 47 | if ( empty( $get ) ) { 48 | $arr = array_filter( $arr ); 49 | 50 | return 2 === count( $arr ); 51 | } 52 | } 53 | 54 | // Translators: %s is the plugin name. 55 | $arr['title'] = sprintf( __( 'Install: %s', 'fitfloss' ), $plugin_name ); 56 | // Translators: %s is the plugin name. 57 | $arr['description'] = sprintf( __( 'Please install %s in order to create the demo content.', 'fitfloss' ), $plugin_name ); 58 | 59 | if ( $arr['installed'] ) { 60 | // Translators: %s is the plugin name 61 | $arr['title'] = sprintf( __( 'Activate: %s', 'fitfloss' ), $plugin_name ); 62 | // Translators: %s is the plugin name 63 | $arr['description'] = sprintf( __( 'Please activate %s in order to create the demo content.', 'fitfloss' ), $plugin_name ); 64 | } 65 | 66 | return $arr[ $get ]; 67 | } 68 | 69 | /** 70 | * @return array 71 | */ 72 | public static function verify_cf7() { 73 | $arr = array( 74 | 'installed' => false, 75 | 'active' => false, 76 | ); 77 | 78 | if ( file_exists( ABSPATH . 'wp-content/plugins/contact-form-7' ) ) { 79 | $arr['installed'] = true; 80 | $arr['active'] = true; 81 | } 82 | 83 | return $arr; 84 | } 85 | 86 | public static function verify_ocdi() { 87 | $arr = array( 88 | 'installed' => false, 89 | 'active' => false, 90 | ); 91 | 92 | if ( file_exists( ABSPATH . 'wp-content/plugins/one-click-demo-import' ) ) { 93 | $arr['installed'] = true; 94 | $arr['active'] = true; 95 | } 96 | 97 | return $arr; 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /inc/customizer/customizer.php: -------------------------------------------------------------------------------- 1 | get_section( 'title_tagline' )->panel = 'fitfloss_theme_options_panel'; 28 | // change priorities 29 | $wp_customize->get_section( 'title_tagline' )->priority = 0; 30 | $wp_customize->remove_section( 'colors' ); 31 | 32 | // Copyright text selective refresh 33 | $wp_customize->selective_refresh->add_partial( 'fitfloss-copyright-text-settings', 34 | array( 'selector' => '.copyright-text' ) ); 35 | 36 | 37 | } 38 | 39 | 40 | // Customizer js enqueue 41 | 42 | public function fitfloss_customizer_js(){ 43 | 44 | wp_enqueue_script( 'fitfloss-customizer', FITFLOSS_DIR_URI.'inc/customizer/js/customizer.js', array('customize-controls'), '1.0', true ); 45 | 46 | wp_localize_script( 'fitfloss-customizer', 'customizerdata', array( 47 | 'site_url' => site_url('/'), 48 | 'blog_page' => get_post_type_archive_link( 'post' ), 49 | 50 | ) ); 51 | 52 | } 53 | 54 | // Get page name by page template 55 | public static function fitfloss_get_page_name( $template ){ 56 | 57 | $pages = get_pages(array( 58 | 'meta_key' => '_wp_page_template', 59 | 'meta_value' => esc_html( $template ) 60 | )); 61 | 62 | return $pages; 63 | } 64 | 65 | // Image sanitization callback. 66 | 67 | public static function fitfloss_sanitize_image( $image, $setting ) { 68 | 69 | /* 70 | * Array of valid image file types. 71 | * 72 | * The array includes image mime types that are included in wp_get_mime_types() 73 | */ 74 | $mimes = array( 75 | 'jpg|jpeg|jpe' => 'image/jpeg', 76 | 'gif' => 'image/gif', 77 | 'png' => 'image/png', 78 | 'bmp' => 'image/bmp', 79 | 'tif|tiff' => 'image/tiff', 80 | 'ico' => 'image/x-icon' 81 | ); 82 | 83 | // Return an array with file extension and mime_type. 84 | $file = wp_check_filetype( $image, $mimes ); 85 | 86 | // If $image has a valid mime_type, return it; otherwise, return the default. 87 | return ( $file['ext'] ? $image : $setting->default ); 88 | } 89 | 90 | } 91 | ?> -------------------------------------------------------------------------------- /assets/css/owl.carousel.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.3.4 3 | * Copyright 2013-2018 David Deutsch 4 | * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 | */ 6 | .owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} -------------------------------------------------------------------------------- /inc/hooks/hooks.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /single-course.php: -------------------------------------------------------------------------------- 1 | 21 | 22 |
    23 |
    24 |
    25 |
    26 |
    27 |
    28 |

    29 | 30 |
    31 |
    32 |

    33 |

    34 |
    35 |
    36 |
    37 |
    38 |
    39 |
    40 |

    41 | 42 |
    43 |
    44 |

    45 | 46 |
    47 |
    48 |

    49 | 50 |
    51 |
    52 |

    53 | 54 |
    55 | 56 |
    57 |
    58 |
    59 |
    60 |
    61 | 62 | 23 | 24 | 25 |
    26 |

    27 | 'div', 31 | 'short_ping' => true, 32 | 'avatar_size' => 70, 33 | 'type' => 'all', 34 | 'callback' => 'fitfloss_comment_callback', 35 | ) 36 | ); 37 | the_comments_pagination(); ?> 38 |
    39 | 40 | 41 | 42 | 44 |

    45 | 48 | 49 |
    50 | 51 |

    52 | 53 | 54 | '
    ', 60 | 'email' => '
    ', 61 | 'url' => '
    ' 62 | ); 63 | $comments_args = array( 64 | 'fields' => apply_filters( 'comment_form_default_fields', $fields ), 65 | 'class_form' => 'form-contact comment_form', 66 | 'id_form' => 'commentForm', 67 | 'submit_button' => '
    ', 68 | 'id_submit' => 'submit-btn', 69 | 'title_reply' => '', 70 | 'comment_notes_before' => '', 71 | 'comment_field' => '
    ', 72 | 'comment_notes_after' => '', 73 | ); 74 | comment_form($comments_args); 75 | ?> 76 |
    -------------------------------------------------------------------------------- /inc/classes/Class-Enqueue.php: -------------------------------------------------------------------------------- 1 | scripts; 27 | 28 | // variable type check 29 | if( is_array( $scripts ) && count( $scripts ) > 0 ){ 30 | 31 | // Style Enqueue 32 | if( is_array( $scripts['style'] ) && count( $scripts['style'] ) > 0 ){ 33 | 34 | foreach( $scripts['style'] as $style ){ 35 | 36 | // Check handler 37 | $handler = ''; 38 | if( !empty( $style['handler'] ) ){ 39 | $handler = $style['handler']; 40 | } 41 | 42 | // Check file 43 | $file = ''; 44 | if( !empty( $style['file'] ) ){ 45 | $file = $style['file']; 46 | } 47 | // Check dependency 48 | $dependency = ''; 49 | if( !empty( $style['dependency'] ) ){ 50 | $dependency = $style['dependency']; 51 | } 52 | // Check version 53 | $version = ''; 54 | if( !empty( $style['version'] ) ){ 55 | $version = $style['version']; 56 | } 57 | 58 | // wp_enqueue_style 59 | wp_enqueue_style( esc_html( $handler ), esc_url( $file ), $dependency, esc_html( $version ) ); 60 | 61 | } 62 | 63 | } // End Style Enqueue 64 | 65 | // Scripts Enqueue 66 | if( is_array( $scripts['scripts'] ) && count( $scripts['scripts'] ) > 0 ){ 67 | 68 | foreach( $scripts['scripts'] as $script ){ 69 | 70 | // Check handler 71 | $handler = ''; 72 | if( !empty( $script['handler'] ) ){ 73 | $handler = $script['handler']; 74 | } 75 | 76 | // Check file 77 | $file = ''; 78 | if( !empty( $script['file'] ) ){ 79 | $file = $script['file']; 80 | } 81 | // Check dependency 82 | $dependency = array('jquery'); 83 | if( !empty( $script['dependency'] ) ){ 84 | $dependency = $script['dependency']; 85 | } 86 | // Check version 87 | $version = ''; 88 | if( !empty( $script['version'] ) ){ 89 | $version = $script['version']; 90 | } 91 | // Check in_footer 92 | $in_footer = ''; 93 | if( !empty( $script['in_footer'] ) ){ 94 | $in_footer = $script['in_footer']; 95 | } 96 | 97 | // wp enqueue script 98 | if( !empty( $script['register'] ) ){ 99 | wp_register_script( esc_html( $handler ), esc_url( $file ), $dependency, esc_html( $version ), esc_html( $in_footer ) ); 100 | }else{ 101 | wp_enqueue_script( esc_html( $handler ), esc_url( $file ), $dependency, esc_html( $version ), esc_html( $in_footer ) ); 102 | } 103 | 104 | // Condational Script 105 | if( !empty( $script['condation'] ) ){ 106 | wp_script_add_data( esc_html( $handler ), 'conditional', esc_html( $script['condation'] ) ); 107 | } 108 | 109 | } 110 | 111 | // Comment replay 112 | if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { 113 | wp_enqueue_script( 'comment-reply' ); 114 | } 115 | 116 | } // End Scripts Enqueue 117 | 118 | 119 | } // End variable type check 120 | 121 | } 122 | 123 | } 124 | 125 | 126 | 127 | 128 | ?> -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | 'fitfloss_theme_options_panel', 22 | 'args' => array( 23 | 'priority' => 0, 24 | 'capability' => 'edit_theme_options', 25 | 'theme_supports' => '', 26 | 'title' => esc_html__( 'Theme Options', 'fitfloss' ), 27 | ), 28 | ) 29 | ); 30 | 31 | 32 | /*********************************** 33 | * Register customizer sections 34 | ***********************************/ 35 | 36 | 37 | $sections = array( 38 | 39 | /** 40 | * General Section 41 | */ 42 | array( 43 | 'id' => 'fitfloss_general_section', 44 | 'args' => array( 45 | 'title' => esc_html__( 'General', 'fitfloss' ), 46 | 'panel' => 'fitfloss_theme_options_panel', 47 | 'priority' => 1, 48 | ), 49 | ), 50 | 51 | /** 52 | * Social Profiles Section 53 | */ 54 | array( 55 | 'id' => 'fitfloss_social_section', 56 | 'args' => array( 57 | 'title' => esc_html__( 'Social Profiles', 'fitfloss' ), 58 | 'panel' => 'fitfloss_theme_options_panel', 59 | 'priority' => 2, 60 | ), 61 | ), 62 | 63 | /** 64 | * Header Section 65 | */ 66 | array( 67 | 'id' => 'fitfloss_header_section', 68 | 'args' => array( 69 | 'title' => esc_html__( 'Header', 'fitfloss' ), 70 | 'panel' => 'fitfloss_theme_options_panel', 71 | 'priority' => 3, 72 | ), 73 | ), 74 | 75 | /** 76 | * Blog Section 77 | */ 78 | array( 79 | 'id' => 'fitfloss_blog_section', 80 | 'args' => array( 81 | 'title' => esc_html__( 'Blog', 'fitfloss' ), 82 | 'panel' => 'fitfloss_theme_options_panel', 83 | 'priority' => 4, 84 | ), 85 | ), 86 | 87 | /** 88 | * Reservation Section 89 | */ 90 | array( 91 | 'id' => 'fitfloss_reservation_section', 92 | 'args' => array( 93 | 'title' => esc_html__( 'Reservation or Query Settings', 'fitfloss' ), 94 | 'panel' => 'fitfloss_theme_options_panel', 95 | 'priority' => 5, 96 | ), 97 | ), 98 | 99 | /** 100 | * Instagram Section 101 | */ 102 | array( 103 | 'id' => 'fitfloss_instagram_section', 104 | 'args' => array( 105 | 'title' => esc_html__( 'Instagram Settings', 'fitfloss' ), 106 | 'panel' => 'fitfloss_theme_options_panel', 107 | 'priority' => 6, 108 | ), 109 | ), 110 | 111 | 112 | /** 113 | * 404 Page Section 114 | */ 115 | array( 116 | 'id' => 'fitfloss_fof_section', 117 | 'args' => array( 118 | 'title' => esc_html__( '404 Page', 'fitfloss' ), 119 | 'panel' => 'fitfloss_theme_options_panel', 120 | 'priority' => 7, 121 | ), 122 | ), 123 | 124 | /** 125 | * Footer Section 126 | */ 127 | array( 128 | 'id' => 'fitfloss_footer_section', 129 | 'args' => array( 130 | 'title' => esc_html__( 'Footer Page', 'fitfloss' ), 131 | 'panel' => 'fitfloss_theme_options_panel', 132 | 'priority' => 8, 133 | ), 134 | ), 135 | 136 | 137 | 138 | ); 139 | 140 | 141 | /*********************************** 142 | * Add customizer elements 143 | ***********************************/ 144 | $collection = array( 145 | 'panel' => $panels, 146 | 'section' => $sections, 147 | ); 148 | 149 | Epsilon_Customizer::add_multiple( $collection ); 150 | 151 | ?> -------------------------------------------------------------------------------- /assets/css/nice-select.css: -------------------------------------------------------------------------------- 1 | .nice-select { 2 | -webkit-tap-highlight-color: transparent; 3 | background-color: #fff; 4 | border-radius: 5px; 5 | border: solid 1px #e8e8e8; 6 | box-sizing: border-box; 7 | clear: both; 8 | cursor: pointer; 9 | display: block; 10 | float: left; 11 | font-family: inherit; 12 | font-size: 14px; 13 | font-weight: normal; 14 | height: 42px; 15 | line-height: 40px; 16 | outline: none; 17 | padding-left: 18px; 18 | padding-right: 30px; 19 | position: relative; 20 | text-align: left !important; 21 | -webkit-transition: all 0.2s ease-in-out; 22 | transition: all 0.2s ease-in-out; 23 | -webkit-user-select: none; 24 | -moz-user-select: none; 25 | -ms-user-select: none; 26 | user-select: none; 27 | white-space: nowrap; 28 | width: auto; } 29 | .nice-select:hover { 30 | border-color: #dbdbdb; } 31 | .nice-select:active, .nice-select.open, .nice-select:focus { 32 | border-color: #999; } 33 | .nice-select:after { 34 | border-bottom: 2px solid #999; 35 | border-right: 2px solid #999; 36 | content: ''; 37 | display: block; 38 | height: 10px; 39 | margin-top: -4px; 40 | pointer-events: none; 41 | position: absolute; 42 | right: 12px; 43 | top: 50%; 44 | -webkit-transform-origin: 66% 66%; 45 | -ms-transform-origin: 66% 66%; 46 | transform-origin: 66% 66%; 47 | -webkit-transform: rotate(45deg); 48 | -ms-transform: rotate(45deg); 49 | transform: rotate(45deg); 50 | -webkit-transition: all 0.15s ease-in-out; 51 | transition: all 0.15s ease-in-out; 52 | width: 10px; } 53 | .nice-select.open:after { 54 | -webkit-transform: rotate(-135deg); 55 | -ms-transform: rotate(-135deg); 56 | transform: rotate(-135deg); } 57 | .nice-select.open .list { 58 | opacity: 1; 59 | pointer-events: auto; 60 | -webkit-transform: scale(1) translateY(0); 61 | -ms-transform: scale(1) translateY(0); 62 | transform: scale(1) translateY(0); } 63 | .nice-select.disabled { 64 | border-color: #ededed; 65 | color: #999; 66 | pointer-events: none; } 67 | .nice-select.disabled:after { 68 | border-color: #cccccc; } 69 | .nice-select.wide { 70 | width: 100%; } 71 | .nice-select.wide .list { 72 | left: 0 !important; 73 | right: 0 !important; } 74 | .nice-select.right { 75 | float: right; } 76 | .nice-select.right .list { 77 | left: auto; 78 | right: 0; } 79 | .nice-select.small { 80 | font-size: 12px; 81 | height: 36px; 82 | line-height: 34px; } 83 | .nice-select.small:after { 84 | height: 4px; 85 | width: 4px; } 86 | .nice-select.small .option { 87 | line-height: 34px; 88 | min-height: 34px; } 89 | .nice-select .list { 90 | background-color: #fff; 91 | border-radius: 5px; 92 | box-shadow: 0 0 0 1px rgba(68, 68, 68, 0.11); 93 | box-sizing: border-box; 94 | margin-top: 4px; 95 | opacity: 0; 96 | overflow: hidden; 97 | padding: 0; 98 | pointer-events: none; 99 | position: absolute; 100 | top: 100%; 101 | left: 0; 102 | -webkit-transform-origin: 50% 0; 103 | -ms-transform-origin: 50% 0; 104 | transform-origin: 50% 0; 105 | -webkit-transform: scale(0.75) translateY(-21px); 106 | -ms-transform: scale(0.75) translateY(-21px); 107 | transform: scale(0.75) translateY(-21px); 108 | -webkit-transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; 109 | transition: all 0.2s cubic-bezier(0.5, 0, 0, 1.25), opacity 0.15s ease-out; 110 | z-index: 9; } 111 | .nice-select .list:hover .option:not(:hover) { 112 | background-color: transparent !important; } 113 | .nice-select .option { 114 | cursor: pointer; 115 | font-weight: 400; 116 | line-height: 40px; 117 | list-style: none; 118 | min-height: 40px; 119 | outline: none; 120 | padding-left: 18px; 121 | padding-right: 29px; 122 | text-align: left; 123 | -webkit-transition: all 0.2s; 124 | transition: all 0.2s; } 125 | .nice-select .option:hover, .nice-select .option.focus, .nice-select .option.selected.focus { 126 | background-color: #f6f6f6; } 127 | .nice-select .option.selected { 128 | font-weight: bold; } 129 | .nice-select .option.disabled { 130 | background-color: transparent; 131 | color: #999; 132 | cursor: default; } 133 | 134 | .no-csspointerevents .nice-select .list { 135 | display: none; } 136 | 137 | .no-csspointerevents .nice-select.open .list { 138 | display: block; } 139 | -------------------------------------------------------------------------------- /assets/css/magnific-popup.css: -------------------------------------------------------------------------------- 1 | .mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#CCC;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#CCC}.mfp-preloader a:hover{color:#FFF}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;padding:0 0 18px 10px;color:#FFF;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:hover,.mfp-close:focus{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#FFF;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#CCC;font-size:12px;line-height:18px;white-space:nowrap}.mfp-arrow{position:absolute;opacity:.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1}.mfp-arrow:before,.mfp-arrow:after{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #FFF;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #FFF;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0 0;transform-origin:0 0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}} -------------------------------------------------------------------------------- /assets/css/elementor-default-element-style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Common css 3 | */ 4 | 5 | .elementor-icon, 6 | .elementor-widget-counter .elementor-counter-number-wrapper, 7 | .elementor-widget-icon-list .elementor-icon-list-icon i { 8 | color: #4a7aec; 9 | } 10 | .elementor-widget-tabs .elementor-tab-title, 11 | .elementor-widget-accordion .elementor-accordion .elementor-tab-title { 12 | color: #222; 13 | } 14 | .elementor-accordion .elementor-tab-content, 15 | .elementor-accordion .elementor-accordion-item { 16 | border-color: #eee; 17 | } 18 | .elementor-widget-tabs .elementor-tab-content, 19 | .elementor-widget-tabs .elementor-tab-title:after, 20 | .elementor-widget-tabs .elementor-tab-title:before, 21 | .elementor-widget-tabs .elementor-tab-content { 22 | border-color: #eee; 23 | } 24 | .elementor-widget-tabs .elementor-tab-desktop-title.elementor-active{ 25 | border: 0px; 26 | background-color: #404551; 27 | } 28 | .elementor-widget .elementor-icon-list-item { 29 | margin-bottom: 8px; 30 | } 31 | .elementor-6 .elementor-element.elementor-element-a2d9792 .elementor-tab-content { 32 | color: #abadbe; 33 | font-size: 15px; 34 | } 35 | /** 36 | * Progress Css 37 | */ 38 | .elementor-widget-progress .elementor-title { 39 | color: #abadbe; 40 | margin-bottom: 8px; 41 | display: inline-block; 42 | font-weight: 500; 43 | font-size: 15px; 44 | } 45 | .elementor-progress-text { 46 | font-size: 0px; 47 | } 48 | .elementor-progress-wrapper { 49 | background-color: #eee; 50 | color: #222; 51 | -webkit-border-radius: 0px; 52 | height: 5px; 53 | line-height: 5px; 54 | border-radius: 0px; 55 | } 56 | .elementor-progress-bar { 57 | background-color: #4a7aec; 58 | position: relative; 59 | border-radius: 0px; 60 | height: 5px; 61 | } 62 | .elementor-progress-percentage { 63 | padding-right: 0px; 64 | position: absolute; 65 | right: 0; 66 | color: #4a7aec; 67 | top: -20px; 68 | font-size: 15px; 69 | font-weight: 500; 70 | } 71 | /** 72 | * Button Css 73 | */ 74 | .elementor-button.elementor-size-xs, 75 | .elementor-button.elementor-size-lg, 76 | .elementor-button.elementor-size-xl, 77 | .elementor-button.elementor-size-md, 78 | .elementor-button.elementor-size-sm { 79 | border-radius: 50px; 80 | background: #4a7aec; 81 | border: 1px solid #4a7aec; 82 | color: #fff; 83 | font-weight: 600; 84 | -webkit-transition: all 0.3s ease 0s; 85 | -moz-transition: all 0.3s ease 0s; 86 | -o-transition: all 0.3s ease 0s; 87 | transition: all 0.3s ease 0s; 88 | } 89 | .elementor-button.elementor-size-xs:hover, 90 | .elementor-button.elementor-size-lg:hover, 91 | .elementor-button.elementor-size-xl:hover, 92 | .elementor-button.elementor-size-md:hover, 93 | .elementor-button.elementor-size-sm:hover { 94 | background-color: #1a3c8d; 95 | color: #fff; 96 | } 97 | /** 98 | * Icon box and image box css 99 | * 100 | */ 101 | .elementor-image-box-title, 102 | .elementor-icon-box-title { 103 | font-size: 18px; 104 | margin-bottom: 10px; 105 | } 106 | /** 107 | * Testimonial css 108 | * 109 | */ 110 | .elementor-testimonial-wrapper .elementor-testimonial-content { 111 | font-size: 14px; 112 | } 113 | .elementor-testimonial-wrapper .elementor-testimonial-name { 114 | font-weight: 500; 115 | color: #222; 116 | } 117 | /** 118 | * Toggle css 119 | * 120 | */ 121 | .elementor-toggle .elementor-tab-title, 122 | .elementor-toggle .elementor-tab-content { 123 | border-color: #eee; 124 | 125 | } 126 | .elementor-toggle .elementor-tab-title { 127 | color: #222; 128 | } 129 | .elementor-toggle .elementor-tab-title { 130 | background-color: #4a7aec; 131 | color: #fff; 132 | font-size: 15px; 133 | font-weight: 400; 134 | } 135 | .elementor-toggle .elementor-tab-content { 136 | color: #abadbe; 137 | font-size: 15px; 138 | } 139 | /** 140 | * Image gallery 141 | * 142 | */ 143 | 144 | .gallery .gallery-item img { 145 | border: 0px !important; 146 | } 147 | .gallery .gallery-item { 148 | margin-top: 0px !important; 149 | } 150 | /** 151 | * Counter 152 | * 153 | */ 154 | .elementor-counter .elementor-counter-title { 155 | font-size: 15px; 156 | font-weight: 500; 157 | color: #292d4f; 158 | line-height: 1.9; 159 | } 160 | 161 | /** 162 | * Accordion 163 | * 164 | */ 165 | .elementor-widget-tabs .elementor-tab-title, 166 | .elementor-widget-accordion .elementor-accordion .elementor-tab-title { 167 | background-color: #4a7aec; 168 | color: #fff; 169 | font-size: 15px; 170 | font-weight: 400; 171 | } 172 | .elementor-accordion .elementor-tab-title .elementor-accordion-icon.elementor-accordion-icon-left { 173 | font-size: 10px; 174 | margin-top: 1px; 175 | } 176 | .elementor-accordion .elementor-accordion-item { 177 | margin-bottom: 15px; 178 | color: #abadbe; 179 | font-size: 15px; 180 | } 181 | /** 182 | * Icon 183 | */ 184 | .elementor-view-stacked .elementor-icon { 185 | background-color: #4a7aec; 186 | } 187 | .elementor-view-framed .elementor-icon { 188 | color: #4a7aec; 189 | border: 3px solid #4a7aec; 190 | } 191 | .elementor-icon:hover { 192 | color: #1a3c8d; 193 | } -------------------------------------------------------------------------------- /assets/js/jquery.ajaxchimp.min.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 'use strict'; 3 | 4 | $.ajaxChimp = { 5 | responses: { 6 | 'We have sent you a confirmation email' : 0, 7 | 'Please enter a valid email' : 1, 8 | 'An email address must contain a single @' : 2, 9 | 'The domain portion of the email address is invalid (the portion after the @: )' : 3, 10 | 'The username portion of the email address is invalid (the portion before the @: )' : 4, 11 | 'This email address looks fake or invalid. Please enter a real email address' : 5 12 | }, 13 | translations: { 14 | 'en': null 15 | }, 16 | init: function (selector, options) { 17 | $(selector).ajaxChimp(options); 18 | } 19 | }; 20 | 21 | $.fn.ajaxChimp = function (options) { 22 | $(this).each(function(i, elem) { 23 | var form = $(elem); 24 | var email = form.find('input[type=email]'); 25 | var label = form.find('.info'); 26 | 27 | var settings = $.extend({ 28 | 'url': form.attr('action'), 29 | 'language': 'en' 30 | }, options); 31 | 32 | var url = settings.url.replace('/post?', '/post-json?').concat('&c=?'); 33 | 34 | form.attr('novalidate', 'true'); 35 | email.attr('name', 'EMAIL'); 36 | 37 | form.submit(function () { 38 | var msg; 39 | function successCallback(resp) { 40 | if (resp.result === 'success') { 41 | msg = 'We have sent you a confirmation email'; 42 | label.removeClass('error').addClass('valid'); 43 | email.removeClass('error').addClass('valid'); 44 | } else { 45 | email.removeClass('valid').addClass('error'); 46 | label.removeClass('valid').addClass('error'); 47 | var index = -1; 48 | try { 49 | var parts = resp.msg.split(' - ', 2); 50 | if (parts[1] === undefined) { 51 | msg = resp.msg; 52 | } else { 53 | var i = parseInt(parts[0], 10); 54 | if (i.toString() === parts[0]) { 55 | index = parts[0]; 56 | msg = parts[1]; 57 | } else { 58 | index = -1; 59 | msg = resp.msg; 60 | } 61 | } 62 | } 63 | catch (e) { 64 | index = -1; 65 | msg = resp.msg; 66 | } 67 | } 68 | 69 | // Translate and display message 70 | if ( 71 | settings.language !== 'en' 72 | && $.ajaxChimp.responses[msg] !== undefined 73 | && $.ajaxChimp.translations 74 | && $.ajaxChimp.translations[settings.language] 75 | && $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]] 76 | ) { 77 | msg = $.ajaxChimp.translations[settings.language][$.ajaxChimp.responses[msg]]; 78 | } 79 | label.html(msg); 80 | 81 | label.show(2000); 82 | if (settings.callback) { 83 | settings.callback(resp); 84 | } 85 | } 86 | 87 | var data = {}; 88 | var dataArray = form.serializeArray(); 89 | $.each(dataArray, function (index, item) { 90 | data[item.name] = item.value; 91 | }); 92 | 93 | $.ajax({ 94 | url: url, 95 | data: data, 96 | success: successCallback, 97 | dataType: 'jsonp', 98 | error: function (resp, text) { 99 | console.log('mailchimp ajax submit error: ' + text); 100 | } 101 | }); 102 | 103 | // Translate and display submit message 104 | var submitMsg = 'Submitting...'; 105 | if( 106 | settings.language !== 'en' 107 | && $.ajaxChimp.translations 108 | && $.ajaxChimp.translations[settings.language] 109 | && $.ajaxChimp.translations[settings.language]['submit'] 110 | ) { 111 | submitMsg = $.ajaxChimp.translations[settings.language]['submit']; 112 | } 113 | label.html(submitMsg).show(2000); 114 | 115 | return false; 116 | }); 117 | }); 118 | return this; 119 | }; 120 | })(jQuery); -------------------------------------------------------------------------------- /inc/support-functions.php: -------------------------------------------------------------------------------- 1 | '; 24 | $categories .= ''; 31 | $categories .= ''; 32 | } 33 | 34 | return $categories; 35 | 36 | } 37 | 38 | // Blog categories 39 | function fitfloss_featured_post_cat(){ 40 | 41 | $categories = get_the_category(); 42 | 43 | if( is_array( $categories ) && count( $categories ) > 0 ){ 44 | $getCat = []; 45 | foreach ( $categories as $value ) { 46 | 47 | if( $value->slug != 'featured' && ! is_front_page() ){ 48 | $getCat[] = ' '.esc_html( $value->name ).''; 49 | }else{ 50 | $getCat[] = ''.esc_html( $value->name ); 51 | } 52 | } 53 | 54 | return implode( ', ', $getCat ); 55 | } 56 | 57 | } 58 | 59 | 60 | // Post Tags 61 | function fitfloss_post_tags() { 62 | 63 | $tags = get_the_tags(); 64 | 65 | $getTags = ''; 66 | 67 | if ( $tags ) { 68 | 69 | foreach ( $tags as $tag ) { 70 | $getTags .= '' . esc_html( $tag->name ) . ''; 71 | } 72 | 73 | } 74 | 75 | return $getTags; 76 | 77 | } 78 | 79 | 80 | // social media 81 | if ( ! function_exists( 'fitfloss_social' ) ) { 82 | function fitfloss_social( $args = array() ) { 83 | 84 | $default = array( 85 | 'wrapper_start' => '', 86 | 'wrapper_end' => '', 87 | 'class' => 'topbar-social', 88 | ); 89 | 90 | $args = wp_parse_args( $args, $default ); 91 | 92 | 93 | $url = fitfloss_opt( 'fitfloss_social_url' ); 94 | if ( is_array( $url ) && count( $url ) > 0 ): 95 | 96 | echo wp_kses_post( $args['wrapper_start'] ); 97 | 98 | echo '
    '; 99 | 100 | // Facebook 101 | if ( ! empty( $url['facebook_url'] ) ) { 102 | echo ''; 103 | } 104 | // Twitter 105 | if ( ! empty( $url['twitter_url'] ) ) { 106 | echo ''; 107 | } 108 | // Google 109 | if ( ! empty( $url['google_url'] ) ) { 110 | echo ''; 111 | } 112 | // Instagram 113 | if ( ! empty( $url['instagram_url'] ) ) { 114 | echo ''; 115 | } 116 | // Pinterest 117 | if ( ! empty( $url['pinterest_url'] ) ) { 118 | echo ''; 119 | } 120 | // Snapchat 121 | if ( ! empty( $url['snapchat_url'] ) ) { 122 | echo ''; 123 | } 124 | // Youtube 125 | if ( ! empty( $url['youtube_url'] ) ) { 126 | echo ''; 127 | } 128 | 129 | 130 | echo '
    '; 131 | echo wp_kses_post( $args['wrapper_end'] ); 132 | 133 | endif; 134 | } 135 | } 136 | // header cart count 137 | function fitfloss_cart_count( $class = '' ) { 138 | 139 | ?> 140 |
    141 | <?php esc_attr_e( 'ICON', 'fitfloss' ); ?> 142 | cart->cart_contents_count ); ?> 143 |
    144 | 145 |
    146 |
    147 |
    [textarea* your-message id:message class:form-control class:w-100 rows:9 cols:30 placeholder "Message"]
    [text* your-name id:name class:form-control placeholder "Enter your name"]
    [email* your-email id:email class:form-control placeholder "Enter your email"]
    [text your-subject id:subject class:form-control placeholder "Subject"]
    [submit class:button class:button-contactForm class:btn_1 class:boxed-btn "Send Message"]
    '; 158 | 159 | return $template; 160 | 161 | } else { 162 | return $template; 163 | } 164 | } 165 | add_filter( 'wpcf7_default_template', 'fitfloss_contact7_form_content', 10, 2 ); -------------------------------------------------------------------------------- /inc/customizer/js/customizer.js: -------------------------------------------------------------------------------- 1 | (function( $ , api){ 2 | 3 | // Customizer fof page redirect 4 | api.section( 'fitfloss_fof_section' , function( section ){ 5 | 6 | section.expanded.bind( function( isExpanded ){ 7 | 8 | if( isExpanded ){ 9 | api.previewer.previewUrl.set( api.settings.url.home+'/maybe404page' ); 10 | }else{ 11 | api.previewer.previewUrl.set( api.settings.url.home ); 12 | } 13 | 14 | } ) 15 | 16 | } ); 17 | 18 | // Customizer blog page redirect 19 | api.section( 'fitfloss_blog_options_section' , function( section ){ 20 | 21 | section.expanded.bind( function( isExpanded ){ 22 | 23 | if( isExpanded ){ 24 | api.previewer.previewUrl.set( moahCustomizerdata.blog_page ); 25 | }else{ 26 | api.previewer.previewUrl.set( api.settings.url.home ); 27 | } 28 | 29 | 30 | 31 | } ) 32 | 33 | } ); 34 | 35 | // General section 36 | api.section( 'fitfloss_general_options_section' , function( section ){ 37 | 38 | section.expanded.bind( function( isExpanded ){ 39 | 40 | 41 | // Preloader option show/hide 42 | 43 | var $preloader = $('#fitfloss-preloader-toggle-settings'), 44 | $preloaderbg = $( '#customize-control-fitfloss_preloaderbgcolor' ), 45 | $preloaderbordercolor = $( '#customize-control-fitfloss_loaderbordcolor' ), 46 | $preloaderactivebordercolor = $( '#customize-control-fitfloss_loaderbordactivecolor' ); 47 | 48 | 49 | // Default 50 | 51 | if( $preloader.is( ':checked' ) ){ 52 | $preloaderbg.show('slow'); 53 | $preloaderbordercolor.show('slow'); 54 | $preloaderactivebordercolor.show('slow'); 55 | }else{ 56 | $preloaderbg.hide('slow'); 57 | $preloaderbordercolor.hide('slow'); 58 | $preloaderactivebordercolor.hide('slow'); 59 | } 60 | 61 | 62 | // on click 63 | $preloader.on( 'click', function(){ 64 | 65 | var $this = $( this ); 66 | 67 | if( $this.is(':checked') ){ 68 | $preloaderbg.show('slow'); 69 | $preloaderbordercolor.show('slow'); 70 | $preloaderactivebordercolor.show('slow'); 71 | }else{ 72 | $preloaderbg.hide('slow'); 73 | $preloaderbordercolor.hide('slow'); 74 | $preloaderactivebordercolor.hide('slow'); 75 | } 76 | 77 | 78 | } ); 79 | 80 | } ); 81 | 82 | 83 | } ); 84 | 85 | // Footer section 86 | api.section( 'fitfloss_footer_options_section' , function( section ){ 87 | 88 | section.expanded.bind( function( isExpanded ){ 89 | 90 | 91 | // Footer Widget option show/hide 92 | var $widget_toggle = $('#fitfloss-widget-toggle-settings'), 93 | $widgetbg = $( '#customize-control-fitfloss_footer_bgColor_settings' ), 94 | $widgettext = $('#customize-control-fitfloss_footer_wtcolor_settings'), 95 | $widgettitle = $('#customize-control-fitfloss_footer_widgettitlecolor_settings'), 96 | $widgetanchor = $('#customize-control-fitfloss_footer_wanchorcolor_settings'), 97 | $widgetanchorhover = $('#customize-control-fitfloss_footer_wanchorhovcolor_settings'); 98 | 99 | 100 | // Default 101 | 102 | if( $widget_toggle.is( ':checked' ) ){ 103 | $widgetbg.show('slow'); 104 | $widgettext.show('slow'); 105 | $widgettitle.show('slow'); 106 | $widgetanchor.show('slow'); 107 | $widgetanchorhover.show('slow'); 108 | }else{ 109 | $widgetbg.hide('slow'); 110 | $widgettext.hide('slow'); 111 | $widgettitle.hide('slow'); 112 | $widgetanchor.hide('slow'); 113 | $widgetanchorhover.hide('slow'); 114 | } 115 | 116 | // on click 117 | $widget_toggle.on( 'click', function(){ 118 | 119 | var $this = $( this ); 120 | 121 | if( $this.is(':checked') ){ 122 | 123 | $widgetbg.show('slow'); 124 | $widgettext.show('slow'); 125 | $widgettitle.show('slow'); 126 | $widgetanchor.show('slow'); 127 | $widgetanchorhover.show('slow'); 128 | }else{ 129 | 130 | $widgetbg.hide('slow'); 131 | $widgettext.hide('slow'); 132 | $widgettitle.hide('slow'); 133 | $widgetanchor.hide('slow'); 134 | $widgetanchorhover.hide('slow'); 135 | } 136 | 137 | 138 | } ); 139 | 140 | /** 141 | * Footer bottom social media option show/hide 142 | * 143 | */ 144 | 145 | var $social_toggle = $('#fitfloss-footersocial-toggle-settings'), 146 | $socialcolor = $( '#customize-control-fitfloss_footer_socialiconcolor_settings' ), 147 | $socialhovercolor = $('#customize-control-fitfloss_footer_socialiconhovercolor_settings'); 148 | 149 | 150 | // Default 151 | 152 | if( $social_toggle.is( ':checked' ) ){ 153 | $socialcolor.show('slow'); 154 | $socialhovercolor.show('slow'); 155 | }else{ 156 | $socialcolor.hide('slow'); 157 | $socialhovercolor.hide('slow'); 158 | } 159 | 160 | // on click 161 | $social_toggle.on( 'click', function(){ 162 | 163 | var $this = $( this ); 164 | 165 | if( $this.is(':checked') ){ 166 | $socialcolor.show('slow'); 167 | $socialhovercolor.show('slow'); 168 | }else{ 169 | $socialcolor.hide('slow'); 170 | $socialhovercolor.hide('slow'); 171 | } 172 | 173 | 174 | } ); 175 | 176 | 177 | } ); 178 | 179 | } ); 180 | 181 | 182 | })( jQuery, wp.customize ); -------------------------------------------------------------------------------- /inc/class-epsilon-init-dashboard.php: -------------------------------------------------------------------------------- 1 | theme = $theme; 33 | 34 | $theme = wp_get_theme(); 35 | $arr = array( 36 | 'theme-name' => $theme->get( 'Name' ), 37 | 'theme-slug' => $theme->get( 'TextDomain' ), 38 | 'theme-version' => $theme->get( 'Version' ), 39 | ); 40 | 41 | $this->theme = wp_parse_args( $this->theme, $arr ); 42 | /** 43 | * If PHP Version is older than 5.3, we switch back to default theme 44 | */ 45 | add_action( 'admin_init', array( $this, 'php_version_check' ) ); 46 | 47 | /** 48 | * Add a notice for the MachoThemes feedback 49 | */ 50 | add_action( 'admin_init', array( $this, 'add_feedback_notice' ) ); 51 | 52 | /** 53 | * Init epsilon dashboard 54 | */ 55 | add_filter( 'epsilon-dashboard-setup', array( $this, 'epsilon_dashboard' ) ); 56 | 57 | add_filter( 'epsilon-onboarding-setup', array( $this, 'epsilon_onboarding' ) ); 58 | 59 | /** 60 | * Grab all class methods and initiate automatically 61 | */ 62 | $methods = get_class_methods( 'Epsilon_init_Dashboard' ); 63 | foreach ( $methods as $method ) { 64 | 65 | 66 | if ( false !== strpos( $method, 'init_' ) ) { 67 | $this->$method(); 68 | } 69 | } 70 | } 71 | 72 | /** 73 | * Fitfloss instance 74 | * 75 | * @param array $theme 76 | * 77 | * @return Fitfloss 78 | */ 79 | public static function get_instance( $theme = array() ) { 80 | static $inst; 81 | if ( ! $inst ) { 82 | $inst = new Epsilon_init_Dashboard( $theme ); 83 | } 84 | 85 | return $inst; 86 | } 87 | 88 | /** 89 | * Check PHP Version and switch theme 90 | */ 91 | public function php_version_check() { 92 | if ( version_compare( PHP_VERSION, '5.3.0' ) >= 0 ) { 93 | return true; 94 | } 95 | 96 | switch_theme( WP_DEFAULT_THEME ); 97 | 98 | return false; 99 | } 100 | 101 | /** 102 | * Adds a feedback notice if conditions are met 103 | */ 104 | public function add_feedback_notice() { 105 | if ( get_user_meta( get_current_user_id(), 'notification_feedback', true ) ) { 106 | return; 107 | } 108 | 109 | $page_on_front = 'page' == get_option( 'show_on_front' ) ? true : false; 110 | $id = absint( get_option( 'page_on_front', 0 ) ); 111 | 112 | if ( $page_on_front && 0 !== $id ) { 113 | $revisions = wp_get_post_revisions( $id ); 114 | 115 | if ( count( $revisions ) > 3 ) { 116 | /** 117 | * Revision keys are ID's, and it's not incremental 118 | */ 119 | $first = end( $revisions ); 120 | 121 | $revision_time = new DateTime( $first->post_modified ); 122 | $today = new DateTime( 'today' ); 123 | $interval = $today->diff( $revision_time )->format( '%d' ); 124 | 125 | if ( 2 <= absint( $interval ) ) { 126 | $this->_notify_feedback(); 127 | } 128 | } 129 | } 130 | } 131 | 132 | /** 133 | * Notify of feedback 134 | */ 135 | private function _notify_feedback() { 136 | if ( ! class_exists( 'Epsilon_Notifications' ) ) { 137 | return; 138 | } 139 | $html = '

    '; 140 | $html .= 141 | vsprintf( 142 | // Translators: 1 is Theme Name, 2 is opening Anchor, 3 is closing. 143 | __( 'We\'ve been working hard on making %1$s the best one out there. We\'re interested in hearing your thoughts about %1$s and what we could do to make it even better. %2$sSend your feedback our way%3$s.', 'fitfloss' ), 144 | array( 145 | 'Fitfloss', 146 | '', 147 | '', 148 | ) 149 | ); 150 | 151 | $notifications = Epsilon_Notifications::get_instance(); 152 | $notifications->add_notice( 153 | array( 154 | 'id' => 'fitfloss_notification_feedback', 155 | 'type' => 'notice epsilon-big', 156 | 'message' => $html, 157 | ) 158 | ); 159 | } 160 | 161 | /** 162 | * Initiate the epsilon framework 163 | */ 164 | public function init_epsilon() { 165 | //new Epsilon_Framework(); 166 | } 167 | 168 | /** 169 | * 170 | */ 171 | public function init_nav_menus() { 172 | new Epsilon_Section_Navigation_Menu( 'fitfloss_frontpage_sections_' ); 173 | } 174 | 175 | /** 176 | * Initiate the welcome screen 177 | */ 178 | public function init_dashboard() { 179 | Epsilon_Dashboard::get_instance( 180 | array( 181 | 'theme' => array( 182 | 'download-id' => '212499' 183 | ), 184 | 'tracking' => $this->theme['theme-slug'] . '_tracking_enable', 185 | ) 186 | ); 187 | 188 | $dashboard = Epsilon_Dashboard_Setup::get_instance(); 189 | $dashboard->add_admin_notice(); 190 | 191 | $upsells = get_option( $this->theme['theme-slug'] . '_theme_upsells', false ); 192 | if ( $upsells ) { 193 | add_filter( 'epsilon_upsell_control_display', '__return_false' ); 194 | } 195 | } 196 | 197 | /** 198 | * Separate setup from init 199 | * 200 | * @param array $setup 201 | * 202 | * @return array 203 | */ 204 | public function epsilon_dashboard( $setup = array() ) { 205 | $dashboard = new Epsilon_Dashboard_Setup(); 206 | 207 | $setup['actions'] = $dashboard->get_actions(); 208 | $setup['tabs'] = $dashboard->get_tabs( $setup ); 209 | $setup['plugins'] = $dashboard->get_plugins(); 210 | $setup['privacy'] = $dashboard->get_privacy_options(); 211 | 212 | $setup['edd'] = $dashboard->get_edd( $setup ); 213 | 214 | $tab = get_user_meta( get_current_user_id(), 'epsilon_active_tab', true ); 215 | 216 | $setup['activeTab'] = ! empty( $tab ) ? absint( $tab ) : 0; 217 | 218 | return $setup; 219 | } 220 | 221 | /** 222 | * Add steps to onboarding 223 | * 224 | * @param array $setup 225 | * 226 | * @return array 227 | */ 228 | public function epsilon_onboarding( $setup = array() ) { 229 | $dashboard = new Epsilon_Dashboard_Setup(); 230 | 231 | $setup['steps'] = $dashboard->get_steps(); 232 | $setup['plugins'] = $dashboard->get_plugins( true ); 233 | $setup['privacy'] = $dashboard->get_privacy_options(); 234 | 235 | return $setup; 236 | } 237 | 238 | 239 | } 240 | -------------------------------------------------------------------------------- /inc/fitfloss-breadcrumbs.php: -------------------------------------------------------------------------------- 1 | '', 26 | 'breadcrumbs_classes' => esc_html( 'breadcrumb' ), 27 | 'home_title' => esc_html__( 'Home', 'fitfloss' ) 28 | ); 29 | $args = apply_filters( 'fitfloss_breadcrumbs_args', wp_parse_args( $args, $defaults ) ); 30 | 31 | $args_el = array(); 32 | 33 | if( $args['breadcrumbs_id'] ){ 34 | 35 | $args_el[] = 'id="'.esc_attr( $args['breadcrumbs_id'] ).'"'; 36 | } 37 | 38 | if( $args['breadcrumbs_classes'] ){ 39 | 40 | $args_el[] = 'class="'.esc_attr( $args['breadcrumbs_classes'] ).'"'; 41 | 42 | } 43 | 44 | /* 45 | * Begin Markup 46 | */ 47 | 48 | // Open the breadcrumbs 49 | $html = '

    '; 116 | $html = apply_filters( 'fitfloss_breadcrumbs_filter', $html ); 117 | 118 | echo wp_kses_post( $html ); 119 | 120 | 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /inc/wp-html-helper.php: -------------------------------------------------------------------------------- 1 | '', 46 | 'alt' => '', 47 | 'class' => '', 48 | 'id' => '', 49 | 'width' => '', 50 | 'height' => '', 51 | 'srcset' => '', 52 | ); 53 | 54 | $args = wp_parse_args( $args, $default ); 55 | 56 | // Image URL 57 | $url = $args['url']; 58 | 59 | // image tag alter 60 | if ( ! empty( $args['alt'] ) ) { 61 | $alt = $args['alt']; 62 | } else { 63 | $alt = fitfloss_img_default_alt( $url ); 64 | } 65 | 66 | /** 67 | * Optional Attr 68 | */ 69 | 70 | $attr = ''; 71 | // Image class 72 | if ( ! empty( $args['class'] ) ) { 73 | $attr .= ' class="' . esc_attr( $args['class'] ) . '"'; 74 | } 75 | // Image id 76 | if ( ! empty( $args['id'] ) ) { 77 | $attr .= ' id="' . esc_attr( $args['id'] ) . '"'; 78 | } 79 | // Image width 80 | if ( ! empty( $args['width'] ) ) { 81 | $attr .= ' width="' . esc_attr( $args['width'] ) . '"'; 82 | } 83 | // Image height 84 | if ( ! empty( $args['height'] ) ) { 85 | $attr .= ' height="' . esc_attr( $args['height'] ) . '"'; 86 | } 87 | // Image srcset 88 | if ( ! empty( $args['srcset'] ) ) { 89 | $attr .= ' srcset="' . esc_attr( $args['srcset'] ) . '"'; 90 | } 91 | 92 | 93 | return '' . esc_attr( $alt ) . ''; 94 | } 95 | } 96 | 97 | // Anchor Tag 98 | if ( ! function_exists( 'fitfloss_anchor_tag' ) ) { 99 | function fitfloss_anchor_tag( array $args ) { 100 | 101 | $default = array( 102 | 'url' => '', 103 | 'text' => 'Click Here', 104 | 'target' => '', 105 | 'title' => '', 106 | 'class' => '', 107 | 'id' => '', 108 | 'wrap_before' => '', 109 | 'wrap_after' => '', 110 | ); 111 | 112 | $args = wp_parse_args( $args, $default ); 113 | 114 | // Anchor url 115 | $url = $args['url']; 116 | 117 | // Anchor Text 118 | $text = $args['text']; 119 | 120 | 121 | /** 122 | * Optional Attr 123 | */ 124 | 125 | $attr = ''; 126 | // class 127 | if ( ! empty( $args['class'] ) ) { 128 | $attr .= ' class="' . esc_attr( $args['class'] ) . '"'; 129 | } 130 | // id 131 | if ( ! empty( $args['id'] ) ) { 132 | $attr .= ' id="' . esc_attr( $args['id'] ) . '"'; 133 | } 134 | // target 135 | if ( ! empty( $args['target'] ) ) { 136 | $attr .= ' target="' . esc_attr( $args['target'] ) . '"'; 137 | } 138 | // Title 139 | if ( ! empty( $args['title'] ) ) { 140 | $attr .= ' title="' . esc_attr( $args['title'] ) . '"'; 141 | } 142 | 143 | $data = ''; 144 | 145 | // Wrapper Start 146 | if ( ! empty( $args['wrap_before'] ) ) { 147 | $data .= $args['wrap_before']; 148 | } 149 | $data .= '' . $text . ''; 150 | 151 | // Wrapper End 152 | if ( ! empty( $args['wrap_after'] ) ) { 153 | $data .= $args['wrap_after']; 154 | } 155 | 156 | return wp_kses_post( $data ); 157 | 158 | } 159 | } 160 | 161 | // Heading Tag 162 | if ( ! function_exists( 'fitfloss_heading_tag' ) ) { 163 | function fitfloss_heading_tag( array $args ) { 164 | 165 | $default = array( 166 | 'tag' => 'h1', 167 | 'text' => 'Write Something', 168 | 'class' => '', 169 | 'id' => '', 170 | 'wrap_before' => '', 171 | 'wrap_after' => '', 172 | ); 173 | 174 | $args = wp_parse_args( $args, $default ); 175 | 176 | // Tag 177 | $tag = $args['tag']; 178 | 179 | /** 180 | * Optional Attr 181 | */ 182 | 183 | $attr = ''; 184 | // class 185 | if ( ! empty( $args['class'] ) ) { 186 | $attr .= ' class="' . esc_attr( $args['class'] ) . '"'; 187 | } 188 | // id 189 | if ( ! empty( $args['id'] ) ) { 190 | $attr .= ' id="' . esc_attr( $args['id'] ) . '"'; 191 | } 192 | 193 | $data = ''; 194 | 195 | // Wrapper Start 196 | if ( ! empty( $args['wrap_before'] ) ) { 197 | $data .= $args['wrap_before']; 198 | } 199 | $data .= '<' . esc_attr( $tag ) . $attr . '>' . $args['text'] . ''; 200 | 201 | // Wrapper End 202 | if ( ! empty( $args['wrap_after'] ) ) { 203 | $data .= $args['wrap_after']; 204 | } 205 | 206 | return wp_kses_post( $data ); 207 | 208 | } 209 | } 210 | 211 | // Paragraph Tag 212 | if ( ! function_exists( 'fitfloss_paragraph_tag' ) ) { 213 | function fitfloss_paragraph_tag( array $args ) { 214 | 215 | $default = array( 216 | 'text' => 'Write Something', 217 | 'class' => '', 218 | 'id' => '', 219 | 'wrap_before' => '', 220 | 'wrap_after' => '', 221 | ); 222 | 223 | $args = wp_parse_args( $args, $default ); 224 | 225 | 226 | /** 227 | * Optional Attr 228 | */ 229 | 230 | $attr = ''; 231 | // class 232 | if ( ! empty( $args['class'] ) ) { 233 | $attr .= ' class="' . esc_attr( $args['class'] ) . '"'; 234 | } 235 | // id 236 | if ( ! empty( $args['id'] ) ) { 237 | $attr .= ' id="' . esc_attr( $args['id'] ) . '"'; 238 | } 239 | 240 | $pdata = ''; 241 | 242 | // Wrapper Start 243 | if ( ! empty( $args['wrap_before'] ) ) { 244 | $pdata .= $args['wrap_before']; 245 | } 246 | $pdata .= '' . $args['text'] . '

    '; 247 | // Wrapper End 248 | if ( ! empty( $args['wrap_after'] ) ) { 249 | $pdata .= $args['wrap_after']; 250 | } 251 | 252 | return wp_kses_post( $pdata ); 253 | 254 | } 255 | } 256 | 257 | // Other Tag 258 | if ( ! function_exists( 'fitfloss_other_tag' ) ) { 259 | function fitfloss_other_tag( array $args ) { 260 | 261 | $default = array( 262 | 'tag' => 'span', 263 | 'text' => 'Write Something', 264 | 'class' => '', 265 | 'id' => '', 266 | 'wrap_before' => '', 267 | 'wrap_after' => '', 268 | ); 269 | 270 | $args = wp_parse_args( $args, $default ); 271 | 272 | // Tag 273 | $tag = $args['tag']; 274 | 275 | /** 276 | * Optional Attr 277 | */ 278 | 279 | $attr = ''; 280 | // class 281 | if ( ! empty( $args['class'] ) ) { 282 | $attr .= ' class="' . esc_attr( $args['class'] ) . '"'; 283 | } 284 | // id 285 | if ( ! empty( $args['id'] ) ) { 286 | $attr .= ' id="' . esc_attr( $args['id'] ) . '"'; 287 | } 288 | 289 | $tagdata = ''; 290 | 291 | // Button Wrapper Start 292 | if ( ! empty( $args['wrap_before'] ) ) { 293 | $tagdata .= $args['wrap_before']; 294 | } 295 | $tagdata .= '<' . esc_attr( $tag ) . $attr . '>' . $args['text'] . '';; 296 | // Button Wrapper End 297 | if ( ! empty( $args['wrap_after'] ) ) { 298 | $tagdata .= $args['wrap_after']; 299 | } 300 | 301 | return wp_kses_post( $tagdata ); 302 | 303 | } 304 | } 305 | 306 | // Button Element 307 | if ( ! function_exists( 'fitfloss_button_element ' ) ) { 308 | function fitfloss_button_element( array $args ) { 309 | 310 | $default = array( 311 | 'text' => 'Button', 312 | 'type' => '', 313 | 'class' => '', 314 | 'id' => '', 315 | 'wrap_before' => '', 316 | 'wrap_after' => '', 317 | ); 318 | 319 | $args = wp_parse_args( $args, $default ); 320 | 321 | /** 322 | * Optional Attr 323 | */ 324 | 325 | $attr = ''; 326 | // class 327 | if ( ! empty( $args['class'] ) ) { 328 | $attr .= ' class="' . esc_attr( $args['class'] ) . '"'; 329 | } 330 | // id 331 | if ( ! empty( $args['id'] ) ) { 332 | $attr .= ' id="' . esc_attr( $args['id'] ) . '"'; 333 | } 334 | // type 335 | if ( ! empty( $args['type'] ) ) { 336 | $attr .= ' type="' . esc_attr( $args['type'] ) . '"'; 337 | } 338 | 339 | $btn = ''; 340 | 341 | // Button Wrapper Start 342 | if ( ! empty( $args['wrap_before'] ) ) { 343 | $btn .= $args['wrap_before']; 344 | } 345 | $btn .= ''; 346 | // Button Wrapper End 347 | if ( ! empty( $args['wrap_after'] ) ) { 348 | $btn .= $args['wrap_after']; 349 | } 350 | 351 | return wp_kses_post( $btn ); 352 | 353 | } 354 | } 355 | -------------------------------------------------------------------------------- /inc/wp_bootstrap_navwalker.php: -------------------------------------------------------------------------------- 1 | \n"; 24 | } 25 | 26 | /** 27 | * @see Walker::start_el() 28 | * @since 3.0.0 29 | * 30 | * @param string $output Passed by reference. Used to append additional content. 31 | * @param object $item Menu item data object. 32 | * @param int $depth Depth of menu item. Used for padding. 33 | * @param int $current_page Menu item ID. 34 | * @param object $args 35 | */ 36 | public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { 37 | $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; 38 | 39 | 40 | 41 | /** 42 | * Dividers, Headers or Disabled 43 | * ============================= 44 | * Determine whether the item is a Divider, Header, Disabled or regular 45 | * menu item. To prevent errors we use the strcasecmp() function to so a 46 | * comparison that is not case sensitive. The strcasecmp() function returns 47 | * a 0 if the strings are equal. 48 | */ 49 | if ( strcasecmp( $item->attr_title, 'divider' ) == 0 && $depth === 1 ) { 50 | $output .= $indent . ''; 205 | $fb_output .= ''; 206 | 207 | if ( $container ) 208 | $fb_output .= ''; 209 | 210 | echo wp_kses_post( $fb_output ); 211 | } 212 | } 213 | } 214 | 215 | // Social nav Walker 216 | class fitfloss_social_navwalker extends Walker_Nav_Menu { 217 | // Tell Walker where to inherit it's parent and id values 218 | var $db_fields = array( 219 | 'parent' => 'menu_item_parent', 220 | 'id' => 'db_id' 221 | ); 222 | 223 | /** 224 | * 225 | * 226 | * Note: Menu objects include url and title properties, so we will use those. 227 | */ 228 | function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { 229 | 230 | 231 | $class = $item->classes; 232 | 233 | $setClass = ''; 234 | 235 | if( !empty( $class['0'] ) ){ 236 | $setClass = $class['0']; 237 | } 238 | 239 | $output .= sprintf( "\n
  • \n", 240 | $item->url, 241 | $setClass 242 | ); 243 | 244 | } 245 | 246 | } 247 | -------------------------------------------------------------------------------- /inc/hooks/hooks-functions.php: -------------------------------------------------------------------------------- 1 | 19 |
    20 |
    21 |
    22 | '; 43 | echo '
    '; 44 | 45 | // Footer widgets 46 | if( fitfloss_opt( 'fitfloss_footer_widget_toggle' ) ){ 47 | get_template_part( 'templates/footer', 'widgets' ); 48 | } 49 | 50 | // Footer bottom 51 | get_template_part( 'templates/footer', 'bottom' ); 52 | echo '
    '; 53 | } 54 | } 55 | 56 | 57 | // Blog, single, page, search, archive pages wrapper start hook function. 58 | if( !function_exists('fitfloss_wrp_start_cb') ){ 59 | function fitfloss_wrp_start_cb(){ 60 | $fitfloss_wrp_start_class = is_home() ? ' blog_area' : ' search-page'; 61 | echo '
    '; 62 | } 63 | } 64 | // Blog, single, page, search, archive pages wrapper end hook function. 65 | if( !function_exists('fitfloss_wrp_end_cb') ){ 66 | function fitfloss_wrp_end_cb(){ 67 | echo '
    '; 68 | } 69 | } 70 | // Blog, single, search, archive pages column start hook function. 71 | if( !function_exists('fitfloss_blog_col_start_cb') ){ 72 | function fitfloss_blog_col_start_cb(){ 73 | 74 | $sidebarOpt = fitfloss_sidebar_opt(); 75 | 76 | // 77 | if( !is_page() ){ 78 | $pullRight = fitfloss_pull_right( $sidebarOpt , '3' ); 79 | 80 | if( $sidebarOpt != '1' ){ 81 | $col = '8'.$pullRight; 82 | }else{ 83 | 84 | if( !is_single() ){ 85 | $col = '12'; 86 | }else{ 87 | $col = '10 offset-lg-1'; 88 | } 89 | 90 | } 91 | }else{ 92 | $col = '8'; 93 | 94 | } 95 | 96 | // single page should be p-b-80 97 | echo '
    '; 98 | } 99 | } 100 | // Blog, single, search, archive pages column end hook function. 101 | if( !function_exists('fitfloss_blog_col_end_cb') ){ 102 | function fitfloss_blog_col_end_cb(){ 103 | echo '
    '; 104 | } 105 | } 106 | 107 | // Blog post thumbnail hook function. 108 | if( !function_exists('fitfloss_blog_posts_thumb_cb') ){ 109 | function fitfloss_blog_posts_thumb_cb(){ 110 | // Thumbnail Show 111 | if( has_post_thumbnail() ){ 112 | 113 | if( !is_single() ){ 114 | 115 | $html = ''; 116 | $html .= ''; 127 | 128 | }else{ 129 | 130 | $html = ''; 131 | $html .= '
    '; 132 | $html .= fitfloss_img_tag( 133 | array( 134 | 'url' => esc_url( get_the_post_thumbnail_url() ), 135 | 'class' => 'card-img rounded-0 wp-post-image' 136 | ) 137 | ); 138 | $html .= '
    '; 139 | 140 | } 141 | echo wp_kses_post( $html ); 142 | 143 | 144 | } 145 | // Thumbnail check and video and audio thumb show 146 | if( !is_single() && !has_post_thumbnail() ){ 147 | $html = ''; 148 | if( has_post_format( array( 'video' ) ) ){ 149 | 150 | $html .= '
    '; 151 | $html .= fitfloss_embedded_media( array( 'video', 'iframe' ) ); 152 | $html .= '
    '; 153 | 154 | }else{ 155 | 156 | if( has_post_format( array( 'audio' ) ) ){ 157 | 158 | $html .= '
    '; 159 | $html .= fitfloss_embedded_media( array( 'audio', 'iframe' ) ); 160 | $html .= '
    '; 161 | } 162 | } 163 | 164 | echo apply_filters( 'fitfloss_audio_embedded_media', $html ); 165 | 166 | } 167 | } 168 | } 169 | 170 | // Blog details wrapper start hook function. 171 | if( !function_exists('fitfloss_blog_details_wrap_start_cb') ){ 172 | function fitfloss_blog_details_wrap_start_cb(){ 173 | 174 | echo '
    '; 175 | } 176 | } 177 | // Blog details wrapper end hook function. 178 | if( !function_exists('fitfloss_blog_details_wrap_end_cb') ){ 179 | function fitfloss_blog_details_wrap_end_cb(){ 180 | echo '
    '; 181 | } 182 | } 183 | 184 | // Blog post title hook function. 185 | if( !function_exists('fitfloss_blog_posts_title_cb') ){ 186 | function fitfloss_blog_posts_title_cb(){ 187 | if( get_the_title() ){ 188 | 189 | $html = ''; 190 | if( !is_single() ){ 191 | $html .= '

    '.esc_html( get_the_title() ).'

    '; 192 | }else{ 193 | $html .= '

    '.esc_html( get_the_title() ).'

    '; 194 | } 195 | 196 | echo wp_kses_post( $html ); 197 | 198 | } 199 | } 200 | } 201 | 202 | // Blog posts meta hook function. 203 | if( !function_exists('fitfloss_blog_posts_meta_cb') ){ 204 | function fitfloss_blog_posts_meta_cb(){ 205 | 206 | echo ''; 237 | 238 | 239 | 240 | } 241 | } 242 | 243 | // Blog posts excerpt hook function. 244 | if( !function_exists('fitfloss_blog_posts_excerpt_cb') ){ 245 | function fitfloss_blog_posts_excerpt_cb(){ 246 | ?> 247 |
    248 | 255 |
    256 | 264 | 265 | 266 | 267 | 277 | 281 | 302 |
    303 | 309 | 310 |
    311 | 338 | 360 | '; 375 | echo ''.esc_html__( 'Post Tags:', 'fitfloss' ).''; 376 | echo '
    '; 377 | // single post tag 378 | echo wp_kses_post( $tags ); 379 | 380 | echo '
    '; 381 | echo ''; 382 | } 383 | 384 | // Author biography 385 | if( '' !== get_the_author_meta('description') ){ 386 | get_template_part( 'templates/biography' ); 387 | } 388 | 389 | } 390 | } 391 | 392 | // Blog 404 page hook function. 393 | if( !function_exists('fitfloss_fof_cb') ){ 394 | function fitfloss_fof_cb(){ 395 | get_template_part( 'templates/404' ); 396 | } 397 | } 398 | 399 | 400 | 401 | ?> -------------------------------------------------------------------------------- /inc/classes/Class-Config.php: -------------------------------------------------------------------------------- 1 | init(); 41 | 42 | } 43 | // Theme init 44 | public function init() { 45 | 46 | $this->setup(); 47 | 48 | // customizer init Instantiate 49 | if( class_exists('Epsilon_Framework') ){ 50 | $this->customizer_init(); 51 | } 52 | 53 | // Instantiate Dashboard 54 | $Epsilon_init_Dashboard = Epsilon_init_Dashboard::get_instance(); 55 | 56 | } 57 | 58 | // Theme setup 59 | private function setup() { 60 | 61 | // Create enqueue class instance 62 | $enqueu = new fitfloss_Enqueue(); 63 | $enqueu->scripts = $this->enqueue(); 64 | $enqueu->fitfloss_scripts_enqueue_init(); 65 | 66 | 67 | } 68 | 69 | // Theme Support 70 | public function support() { 71 | // content width 72 | $GLOBALS['content_width'] = apply_filters( 'fitfloss_content_width', 751 ); 73 | 74 | 75 | // text domain for translation. 76 | load_theme_textdomain( 'fitfloss', FITFLOSS_DIR_PATH . '/languages' ); 77 | 78 | // support title tage 79 | add_theme_support( 'title-tag' ); 80 | 81 | // support logo 82 | add_theme_support( 'custom-logo', array( 83 | 'height' => 78, 84 | 'width' => 82, 85 | 'flex-height' => true, 86 | 'flex-width' => true, 87 | 'header-text' => array( 'site-title', 'site-description' ), 88 | ) ); 89 | 90 | // support post format 91 | add_theme_support( 'post-formats', array( 'video', 'audio' ) ); 92 | 93 | // support post-thumbnails 94 | add_theme_support( 'post-thumbnails', array( 'post', 'course' ) ); 95 | 96 | // Site logo size 97 | add_image_size( 'fitfloss_site_logo_82x78', 82, 78, true ); 98 | 99 | // Popular course thumb size 100 | add_image_size( 'fitfloss_order_thumb_360x300', 360, 300, true ); 101 | 102 | // Schedule & about thumb size 103 | add_image_size( 'fitfloss_schedule_about_thumb_780x946', 780, 946, true ); 104 | 105 | // Gallery thumb size 106 | add_image_size( 'fitfloss_gallery_thumb_360x420', 360, 420, true ); 107 | 108 | // Latest post thumbnail size 109 | add_image_size( 'fitfloss_widget_post_thumb', 80, 80, true ); 110 | 111 | // Single blog post image size 112 | add_image_size( 'fitfloss_single_blog_750x375', 750, 375, true ); 113 | add_image_size( 'fitfloss_np_thumb', 60, 60, true ); 114 | 115 | // support custom background 116 | add_theme_support( 'custom-background', array( 117 | 'default-color' => '#fff', 118 | ) ); 119 | 120 | // support custom header 121 | add_theme_support( 'custom-header', array( 122 | 'default-image' => get_template_directory_uri() . '/assets/img/breadcrumb.jpg', 123 | 'width' => 1920, 124 | 'height' => 474, 125 | 'flex-width' => true, 126 | 'flex-height' => true, 127 | ) ); 128 | 129 | // support automatic feed links 130 | add_theme_support( 'automatic-feed-links' ); 131 | 132 | // support html5 133 | add_theme_support( 'html5' ); 134 | 135 | // Add theme support for selective refresh for widgets. 136 | add_theme_support( 'customize-selective-refresh-widgets' ); 137 | 138 | // register nav menu 139 | register_nav_menus( array( 140 | 'primary-menu' => esc_html__( 'Primary Menu', 'fitfloss' ), 141 | ) ); 142 | 143 | // editor style 144 | add_editor_style( 'assets/css/editor-style.css' ); 145 | 146 | } // end support method 147 | 148 | // enqueue theme style and script 149 | private function enqueue() { 150 | 151 | $cssPath = FITFLOSS_DIR_CSS_URI; 152 | $jsPath = FITFLOSS_DIR_JS_URI; 153 | 154 | $scripts = array( 155 | 'style' => array( 156 | array( 157 | 'handler' => 'google-font', 158 | 'file' => $this->google_font(), 159 | ), 160 | array( 161 | 'handler' => 'bootstrap-css', 162 | 'file' => $cssPath . 'bootstrap.min.css', 163 | 'dependency' => array(), 164 | 'version' => '1.0', 165 | ), 166 | array( 167 | 'handler' => 'animate', 168 | 'file' => $cssPath . 'animate.css', 169 | 'dependency' => array(), 170 | 'version' => '1.0', 171 | ), 172 | array( 173 | 'handler' => 'owl-carousel-css', 174 | 'file' => $cssPath . 'owl.carousel.min.css', 175 | 'dependency' => array(), 176 | 'version' => '1.0', 177 | ), 178 | array( 179 | 'handler' => 'themify-icons', 180 | 'file' => $cssPath . 'themify-icons.css', 181 | 'dependency' => array(), 182 | 'version' => '1.0', 183 | ), 184 | array( 185 | 'handler' => 'nice-select-css', 186 | 'file' => $cssPath . 'nice-select.css', 187 | 'dependency' => array(), 188 | 'version' => '1.0', 189 | ), 190 | array( 191 | 'handler' => 'magnific-popup-css', 192 | 'file' => $cssPath . 'magnific-popup.css', 193 | 'dependency' => array(), 194 | 'version' => '1.0', 195 | ), 196 | array( 197 | 'handler' => 'font-awesome', 198 | 'file' => $cssPath . 'font-awesome.min.css', 199 | 'dependency' => array(), 200 | 'version' => '1.0', 201 | ), 202 | array( 203 | 'handler' => 'main-style', 204 | 'file' => $cssPath . 'style.css', 205 | 'dependency' => array(), 206 | 'version' => $this->fitfloss_version, 207 | ), 208 | array( 209 | 'handler' => 'fitfloss-style', 210 | 'file' => get_stylesheet_uri(), 211 | ), 212 | ), 213 | 'scripts' => array( 214 | array( 215 | 'handler' => 'popper-js', 216 | 'file' => $jsPath . 'popper.min.js', 217 | 'dependency' => array( 'jquery' ), 218 | 'version' => '1.0', 219 | 'in_footer' => true, 220 | ), 221 | array( 222 | 'handler' => 'bootstrap-js', 223 | 'file' => $jsPath . 'bootstrap.min.js', 224 | 'dependency' => array( 'jquery' ), 225 | 'version' => '1.0', 226 | 'in_footer' => true, 227 | ), 228 | array( 229 | 'handler' => 'magnific-popup-js', 230 | 'file' => $jsPath . 'jquery.magnific-popup.js', 231 | 'dependency' => array( 'jquery' ), 232 | 'version' => '1.0', 233 | 'in_footer' => true, 234 | ), 235 | array( 236 | 'handler' => 'owl-carousel-js', 237 | 'file' => $jsPath . 'owl.carousel.min.js', 238 | 'dependency' => array( 'jquery' ), 239 | 'version' => '1.0', 240 | 'in_footer' => true, 241 | ), 242 | array( 243 | 'handler' => 'ajaxchimp-js', 244 | 'file' => $jsPath . 'jquery.ajaxchimp.min.js', 245 | 'dependency' => array( 'jquery' ), 246 | 'version' => '1.0', 247 | 'in_footer' => true, 248 | ), 249 | array( 250 | 'handler' => 'jquery-instagramFeed-js', 251 | 'file' => $jsPath . 'jquery.instagramFeed.min.js', 252 | 'dependency' => array( 'jquery' ), 253 | 'version' => '1.0', 254 | 'in_footer' => true, 255 | ), 256 | array( 257 | 'handler' => 'post-like-js', 258 | 'file' => $jsPath.'post-likes.js', 259 | 'dependency' => array( 'jquery' ), 260 | 'version' => '1.0', 261 | 'in_footer' => true 262 | ), 263 | array( 264 | 'handler' => 'custom-js', 265 | 'file' => $jsPath . 'custom.js', 266 | 'dependency' => array( 'jquery' ), 267 | 'version' => $this->fitfloss_version, 268 | 'in_footer' => true, 269 | ), 270 | 271 | ), 272 | ); 273 | 274 | return $scripts; 275 | 276 | } // end enqueu method 277 | 278 | 279 | // Google Font 280 | private function google_font() { 281 | 282 | $fontUrl = ''; 283 | 284 | if ( 'off' !== _x( 'on', 'Google font: on or off', 'fitfloss' ) ) { 285 | 286 | $font_families = array( 287 | 'Anton|Oswald:300,400,500,600', 288 | ); 289 | 290 | $familyArgs = array( 291 | 'family' => htmlentities( implode( '|', $font_families ) ), 292 | 'subset' => urlencode( 'latin, latin-text' ), 293 | ); 294 | 295 | $fontUrl = add_query_arg( $familyArgs, '//fonts.googleapis.com/css' ); 296 | } 297 | 298 | return esc_url_raw( $fontUrl ); 299 | 300 | } //End google_font method 301 | 302 | /** 303 | * Epsilon customizer 304 | * 305 | */ 306 | 307 | // epsilon customizer init 308 | private function customizer_init(){ 309 | 310 | // epsilon customizer quickie settings 311 | 312 | add_filter( 'epsilon_quickie_bar_shortcuts', array( $this, 'epsilon_quickie' ) ); 313 | 314 | // Instantiate Epsilon Framework object 315 | $Epsilon_Framework = new Epsilon_Framework(); 316 | 317 | 318 | // Instantiate fitfloss theme customizer 319 | $fitfloss_theme_customizer = new fitfloss_theme_customizer(); 320 | } 321 | 322 | public function epsilon_quickie(){ 323 | 324 | return array( 325 | 326 | 'links' => array( 327 | array( 328 | 'link_to' => 'fitfloss_options_panel', 329 | 'icon' => 'dashicons dashicons-admin-tools', 330 | 'link_type' => 'panel', 331 | ), 332 | array( 333 | 'link_to' => 'nav_menus', 334 | 'icon' => 'dashicons dashicons-menu', 335 | 'link_type' => 'panel', 336 | ), 337 | array( 338 | 'link_to' => 'widgets', 339 | 'icon' => 'dashicons dashicons-archive', 340 | 'link_type' => 'panel', 341 | ), 342 | array( 343 | 'link_to' => 'custom_css', 344 | 'icon' => 'dashicons dashicons-editor-code', 345 | 'link_type' => 'section', 346 | ), 347 | 348 | ), 349 | 'logo' => array( 350 | 'url' => EPSILON_URI . '/assets/img/epsilon-logo.png', 351 | 'alt' => 'Epsilon Builder Logo', 352 | ), 353 | ); 354 | 355 | } 356 | 357 | /** 358 | * Notice for Elementor default style 359 | * 360 | */ 361 | 362 | // Check elementor preview page 363 | public static function check_elementor_preview_page(){ 364 | 365 | if( ( isset( $_REQUEST['action'] ) && 'elementor' == $_REQUEST['action'] ) || isset( $_REQUEST['elementor-preview'] ) ){ 366 | return true; 367 | } 368 | 369 | return false; 370 | 371 | } 372 | // Set flag for elementor ( hooked in after switch theme ) 373 | public function set_elementor_flag(){ 374 | update_option( 'fitfloss_had_elementor', 'no' ); 375 | } 376 | // Elementor dsiable default style 377 | public function elementor_desiable_default_style(){ 378 | 379 | $nonce = $_POST['nonce']; 380 | if ( ! wp_verify_nonce( $nonce, 'fitfloss-elementor-notice-nonce' ) ) { 381 | return; 382 | } 383 | $reply = $_POST['reply']; 384 | if ( ! empty( $reply ) ) { 385 | if ( $reply == 'yes' ) { 386 | update_option( 'elementor_disable_color_schemes', 'yes' ); 387 | update_option( 'elementor_disable_typography_schemes', 'yes' ); 388 | } 389 | update_option( 'fitfloss_had_elementor', 'yes' ); 390 | } 391 | die(); 392 | 393 | } 394 | // Enqueue theme default style for elementor 395 | public function enqueue_elementor_theme_default_style(){ 396 | 397 | $disabled_color_schemes = get_option( 'elementor_disable_color_schemes' ); 398 | $disabled_typography_schemes = get_option( 'elementor_disable_typography_schemes' ); 399 | 400 | if ( $disabled_color_schemes === 'yes' && $disabled_typography_schemes === 'yes' ) { 401 | wp_enqueue_style( 'fitfloss-elementor-default-style', FITFLOSS_DIR_CSS_URI. 'elementor-default-element-style.css', array(), $this->fitfloss_version ); 402 | } 403 | } 404 | // Enqueue elementor notice scripts 405 | public function enqueue_elementor_notice_script(){ 406 | 407 | $had_elementor = get_option( 'fitfloss_had_elementor' ); 408 | 409 | if( $had_elementor == 'no' && self::check_elementor_preview_page() ){ 410 | wp_enqueue_script( 'fitfloss-elementor-notice', FITFLOSS_DIR_JS_URI.'fitfloss-elementor-notice.js', array('jquery'), '1.0', true ); 411 | wp_localize_script( 412 | 'fitfloss-elementor-notice', 413 | 'fitflossElementorNotice', 414 | array( 415 | 'ajaxurl' => admin_url( 'admin-ajax.php' ), 416 | 'nonce' => wp_create_nonce( 'fitfloss-elementor-notice-nonce' ), 417 | ) 418 | ); 419 | } 420 | 421 | } 422 | 423 | 424 | } // End Fitfloss Class 425 | 426 | 427 | ?> -------------------------------------------------------------------------------- /inc/post-like.php: -------------------------------------------------------------------------------- 1 | admin_url( 'admin-ajax.php' ), 17 | 'unlike' => esc_html__( 'Unlike', 'fitfloss' ) 18 | ) ); 19 | } 20 | 21 | /** 22 | * Processes like/unlike 23 | * @since 0.5 24 | */ 25 | add_action( 'wp_ajax_nopriv_fitfloss_process_simple_like', 'fitfloss_process_simple_like' ); 26 | add_action( 'wp_ajax_fitfloss_process_simple_like', 'fitfloss_process_simple_like' ); 27 | function fitfloss_process_simple_like() { 28 | // Fitness 29 | $nonce = isset( $_REQUEST['nonce'] ) ? sanitize_text_field( $_REQUEST['nonce'] ) : 0; 30 | if ( !wp_verify_nonce( $nonce, 'simple-likes-nonce' ) ) { 31 | exit( esc_html__( 'Not permitted', 'fitfloss' ) ); 32 | } 33 | // Test if javascript is disabled 34 | $disabled = ( isset( $_REQUEST['disabled'] ) && $_REQUEST['disabled'] == true ) ? true : false; 35 | // Test if this is a comment 36 | $is_comment = ( isset( $_REQUEST['is_comment'] ) && $_REQUEST['is_comment'] == 1 ) ? 1 : 0; 37 | // Base variables 38 | $post_id = ( isset( $_REQUEST['post_id'] ) && is_numeric( $_REQUEST['post_id'] ) ) ? $_REQUEST['post_id'] : ''; 39 | $result = array(); 40 | $post_users = NULL; 41 | $like_count = 0; 42 | // Get plugin options 43 | if ( $post_id != '' ) { 44 | $count = ( $is_comment == 1 ) ? get_comment_meta( $post_id, "_comment_like_count", true ) : get_post_meta( $post_id, "_post_like_count", true ); // like count 45 | $count = ( isset( $count ) && is_numeric( $count ) ) ? $count : 0; 46 | if ( !already_liked( $post_id, $is_comment ) ) { // Like the post 47 | if ( is_user_logged_in() ) { // user is logged in 48 | $user_id = get_current_user_id(); 49 | $post_users = post_user_likes( $user_id, $post_id, $is_comment ); 50 | if ( $is_comment == 1 ) { 51 | // Update User & Comment 52 | $user_like_count = get_user_option( "_comment_like_count", $user_id ); 53 | $user_like_count = ( isset( $user_like_count ) && is_numeric( $user_like_count ) ) ? $user_like_count : 0; 54 | update_user_option( $user_id, "_comment_like_count", ++$user_like_count ); 55 | if ( $post_users ) { 56 | update_comment_meta( $post_id, "_user_comment_liked", $post_users ); 57 | } 58 | } else { 59 | // Update User & Post 60 | $user_like_count = get_user_option( "_user_like_count", $user_id ); 61 | $user_like_count = ( isset( $user_like_count ) && is_numeric( $user_like_count ) ) ? $user_like_count : 0; 62 | update_user_option( $user_id, "_user_like_count", ++$user_like_count ); 63 | if ( $post_users ) { 64 | update_post_meta( $post_id, "_user_liked", $post_users ); 65 | } 66 | } 67 | } else { // user is anonymous 68 | $user_ip = sl_get_ip(); 69 | $post_users = post_ip_likes( $user_ip, $post_id, $is_comment ); 70 | // Update Post 71 | if ( $post_users ) { 72 | if ( $is_comment == 1 ) { 73 | update_comment_meta( $post_id, "_user_comment_IP", $post_users ); 74 | } else { 75 | update_post_meta( $post_id, "_user_IP", $post_users ); 76 | } 77 | } 78 | } 79 | $like_count = ++$count; 80 | $response['status'] = "liked"; 81 | $response['icon'] = get_liked_icon(); 82 | } else { // Unlike the post 83 | if ( is_user_logged_in() ) { // user is logged in 84 | $user_id = get_current_user_id(); 85 | $post_users = post_user_likes( $user_id, $post_id, $is_comment ); 86 | // Update User 87 | if ( $is_comment == 1 ) { 88 | $user_like_count = get_user_option( "_comment_like_count", $user_id ); 89 | $user_like_count = ( isset( $user_like_count ) && is_numeric( $user_like_count ) ) ? $user_like_count : 0; 90 | if ( $user_like_count > 0 ) { 91 | update_user_option( $user_id, "_comment_like_count", --$user_like_count ); 92 | } 93 | } else { 94 | $user_like_count = get_user_option( "_user_like_count", $user_id ); 95 | $user_like_count = ( isset( $user_like_count ) && is_numeric( $user_like_count ) ) ? $user_like_count : 0; 96 | if ( $user_like_count > 0 ) { 97 | update_user_option( $user_id, '_user_like_count', --$user_like_count ); 98 | } 99 | } 100 | // Update Post 101 | if ( $post_users ) { 102 | $uid_key = array_search( $user_id, $post_users ); 103 | unset( $post_users[$uid_key] ); 104 | if ( $is_comment == 1 ) { 105 | update_comment_meta( $post_id, "_user_comment_liked", $post_users ); 106 | } else { 107 | update_post_meta( $post_id, "_user_liked", $post_users ); 108 | } 109 | } 110 | } else { // user is anonymous 111 | $user_ip = sl_get_ip(); 112 | $post_users = post_ip_likes( $user_ip, $post_id, $is_comment ); 113 | // Update Post 114 | if ( $post_users ) { 115 | $uip_key = array_search( $user_ip, $post_users ); 116 | unset( $post_users[$uip_key] ); 117 | if ( $is_comment == 1 ) { 118 | update_comment_meta( $post_id, "_user_comment_IP", $post_users ); 119 | } else { 120 | update_post_meta( $post_id, "_user_IP", $post_users ); 121 | } 122 | } 123 | } 124 | $like_count = ( $count > 0 ) ? --$count : 0; // Prevent negative number 125 | $response['status'] = "unliked"; 126 | $response['icon'] = get_unliked_icon(); 127 | } 128 | if ( $is_comment == 1 ) { 129 | update_comment_meta( $post_id, "_comment_like_count", $like_count ); 130 | update_comment_meta( $post_id, "_comment_like_modified", date( 'Y-m-d H:i:s' ) ); 131 | } else { 132 | update_post_meta( $post_id, "_post_like_count", $like_count ); 133 | update_post_meta( $post_id, "_post_like_modified", date( 'Y-m-d H:i:s' ) ); 134 | } 135 | $response['count'] = get_like_count( $like_count ); 136 | $response['testing'] = $is_comment; 137 | if ( $disabled == true ) { 138 | if ( $is_comment == 1 ) { 139 | wp_redirect( get_permalink( get_the_ID() ) ); 140 | exit(); 141 | } else { 142 | wp_redirect( get_permalink( $post_id ) ); 143 | exit(); 144 | } 145 | } else { 146 | wp_send_json( $response ); 147 | } 148 | } 149 | } 150 | 151 | /** 152 | * Utility to test if the post is already liked 153 | * @since 0.5 154 | */ 155 | function already_liked( $post_id, $is_comment ) { 156 | $post_users = NULL; 157 | $user_id = NULL; 158 | if ( is_user_logged_in() ) { // user is logged in 159 | $user_id = get_current_user_id(); 160 | $post_meta_users = ( $is_comment == 1 ) ? get_comment_meta( $post_id, "_user_comment_liked" ) : get_post_meta( $post_id, "_user_liked" ); 161 | if ( count( $post_meta_users ) != 0 ) { 162 | $post_users = $post_meta_users[0]; 163 | } 164 | } else { // user is anonymous 165 | $user_id = sl_get_ip(); 166 | $post_meta_users = ( $is_comment == 1 ) ? get_comment_meta( $post_id, "_user_comment_IP" ) : get_post_meta( $post_id, "_user_IP" ); 167 | if ( count( $post_meta_users ) != 0 ) { // meta exists, set up values 168 | $post_users = $post_meta_users[0]; 169 | } 170 | } 171 | if ( is_array( $post_users ) && in_array( $user_id, $post_users ) ) { 172 | return true; 173 | } else { 174 | return false; 175 | } 176 | } // already_liked() 177 | 178 | /** 179 | * Output the like button 180 | * @since 0.5 181 | */ 182 | function get_simple_likes_button( $post_id, $is_comment = NULL ) { 183 | $is_comment = ( NULL == $is_comment ) ? 0 : 1; 184 | $output = ''; 185 | $nonce = wp_create_nonce( 'simple-likes-nonce' ); // Fitness 186 | if ( $is_comment == 1 ) { 187 | $post_id_class = esc_attr( ' sl-comment-button-' . $post_id ); 188 | $comment_class = esc_attr( ' sl-comment' ); 189 | $like_count = get_comment_meta( $post_id, "_comment_like_count", true ); 190 | $like_count = ( isset( $like_count ) && is_numeric( $like_count ) ) ? $like_count : 0; 191 | } else { 192 | $post_id_class = esc_attr( ' sl-button-' . $post_id ); 193 | $comment_class = esc_attr( '' ); 194 | $like_count = get_post_meta( $post_id, "_post_like_count", true ); 195 | $like_count = ( isset( $like_count ) && is_numeric( $like_count ) ) ? $like_count : 0; 196 | } 197 | $count = get_like_count( $like_count ); 198 | $icon_empty = get_unliked_icon(); 199 | $icon_full = get_liked_icon(); 200 | // Loader 201 | $loader = ''; 202 | // Liked/Unliked Variables 203 | if ( already_liked( $post_id, $is_comment ) ) { 204 | $class = esc_attr( ' liked' ); 205 | $title = esc_html__( 'Unlike', 'fitfloss' ); 206 | $icon = $icon_full; 207 | } else { 208 | $class = ''; 209 | $title = esc_html__( 'Like', 'fitfloss' ); 210 | $icon = $icon_empty; 211 | } 212 | $output = ''. $icon . '' . $count . '' . $loader . ''; 213 | return $output; 214 | } // get_simple_likes_button() 215 | 216 | 217 | /** 218 | * Utility retrieves post meta user likes (user id array), 219 | * then adds new user id to retrieved array 220 | * @since 0.5 221 | */ 222 | function post_user_likes( $user_id, $post_id, $is_comment ) { 223 | $post_users = ''; 224 | $post_meta_users = ( $is_comment == 1 ) ? get_comment_meta( $post_id, "_user_comment_liked" ) : get_post_meta( $post_id, "_user_liked" ); 225 | if ( count( $post_meta_users ) != 0 ) { 226 | $post_users = $post_meta_users[0]; 227 | } 228 | if ( !is_array( $post_users ) ) { 229 | $post_users = array(); 230 | } 231 | if ( !in_array( $user_id, $post_users ) ) { 232 | $post_users['user-' . $user_id] = $user_id; 233 | } 234 | return $post_users; 235 | } // post_user_likes() 236 | 237 | /** 238 | * Utility retrieves post meta ip likes (ip array), 239 | * then adds new ip to retrieved array 240 | * @since 0.5 241 | */ 242 | function post_ip_likes( $user_ip, $post_id, $is_comment ) { 243 | $post_users = ''; 244 | $post_meta_users = ( $is_comment == 1 ) ? get_comment_meta( $post_id, "_user_comment_IP" ) : get_post_meta( $post_id, "_user_IP" ); 245 | // Retrieve post information 246 | if ( count( $post_meta_users ) != 0 ) { 247 | $post_users = $post_meta_users[0]; 248 | } 249 | if ( !is_array( $post_users ) ) { 250 | $post_users = array(); 251 | } 252 | if ( !in_array( $user_ip, $post_users ) ) { 253 | $post_users['ip-' . $user_ip] = $user_ip; 254 | } 255 | return $post_users; 256 | } // post_ip_likes() 257 | 258 | /** 259 | * Utility to retrieve IP address 260 | * @since 0.5 261 | */ 262 | function sl_get_ip() { 263 | if ( isset( $_SERVER['HTTP_CLIENT_IP'] ) && ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) { 264 | $ip = $_SERVER['HTTP_CLIENT_IP']; 265 | } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) && ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { 266 | $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 267 | } else { 268 | $ip = ( isset( $_SERVER['REMOTE_ADDR'] ) ) ? $_SERVER['REMOTE_ADDR'] : '0.0.0.0'; 269 | } 270 | $ip = filter_var( $ip, FILTER_VALIDATE_IP ); 271 | $ip = ( $ip === false ) ? '0.0.0.0' : $ip; 272 | return $ip; 273 | } // sl_get_ip() 274 | 275 | /** 276 | * Utility returns the button icon for "like" action 277 | * @since 0.5 278 | */ 279 | function get_liked_icon() { 280 | /* If already using Font Awesome with your theme, replace svg with: */ 281 | $icon = ' '; 282 | return $icon; 283 | } // get_liked_icon() 284 | 285 | /** 286 | * Utility returns the button icon for "unlike" action 287 | * @since 0.5 288 | */ 289 | function get_unliked_icon() { 290 | /* If already using Font Awesome with your theme, replace svg with: */ 291 | $icon = ' '; 292 | return $icon; 293 | } // get_unliked_icon() 294 | 295 | /** 296 | * Utility function to format the button count, 297 | * appending "K" if one thousand or greater, 298 | * "M" if one million or greater, 299 | * and "B" if one billion or greater (unlikely). 300 | * $precision = how many decimal points to display (1.25K) 301 | * @since 0.5 302 | */ 303 | function sl_format_count( $number ) { 304 | $precision = 2; 305 | if ( $number >= 1000 && $number < 1000000 ) { 306 | $formatted = number_format( $number/1000, $precision ).'K'; 307 | } else if ( $number >= 1000000 && $number < 1000000000 ) { 308 | $formatted = number_format( $number/1000000, $precision ).'M'; 309 | } else if ( $number >= 1000000000 ) { 310 | $formatted = number_format( $number/1000000000, $precision ).'B'; 311 | } else { 312 | $formatted = $number; // Number is less than 1000 313 | } 314 | $formatted = str_replace( '.00', '', $formatted ); 315 | return $formatted; 316 | } // sl_format_count() 317 | 318 | /** 319 | * Utility retrieves count plus count options, 320 | * returns appropriate format based on options 321 | * @since 0.5 322 | */ 323 | function get_like_count( $like_count ) { 324 | $like_text = esc_html__( '', 'fitfloss' ); 325 | if ( is_numeric( $like_count ) && $like_count > 1 ) { 326 | $number = sl_format_count( $like_count ) . esc_html__( ' Likes', 'fitfloss' ); 327 | } else { 328 | $number = sl_format_count( $like_count ) . esc_html__( ' Like', 'fitfloss' ); 329 | } 330 | $count = ''. $number .''; 331 | return $count; 332 | } // get_like_count() 333 | 334 | // User Profile List 335 | add_action( 'show_user_profile', 'fitfloss_show_user_likes' ); 336 | add_action( 'edit_user_profile', 'fitfloss_show_user_likes' ); 337 | function fitfloss_show_user_likes( $user ) { ?> 338 | 339 | 340 | 341 | 374 | 375 |
    342 | true ) ); 344 | $args = array( 345 | 'numberposts' => -1, 346 | 'post_type' => $types, 347 | 'meta_query' => array ( 348 | array ( 349 | 'key' => '_user_liked', 350 | 'value' => $user->ID, 351 | 'compare' => 'LIKE' 352 | ) 353 | ) ); 354 | $sep = ''; 355 | $like_query = new WP_Query( $args ); 356 | if ( $like_query->have_posts() ) : ?> 357 |

    358 | have_posts() ) : $like_query->the_post(); 359 | echo wp_kses_post( $sep ); 360 | ?> 361 | 362 | 366 |

    367 | 368 |

    369 | 373 |
    376 | 'epsilon-color-picker', 21 | 'label' => esc_html__( 'Theme Color', 'fitfloss' ), 22 | 'description' => esc_html__( 'Select the theme color.', 'fitfloss' ), 23 | 'sanitize_callback' => 'sanitize_text_field', 24 | 'section' => 'fitfloss_general_section', 25 | 'default' => '#ff0000', 26 | ) 27 | ); 28 | 29 | // Header book button label 30 | Epsilon_Customizer::add_field( 31 | 'fitfloss_header_phone_number', 32 | array( 33 | 'type' => 'text', 34 | 'label' => esc_html__( 'Header Phone Number', 'fitfloss' ), 35 | 'section' => 'fitfloss_header_section', 36 | 'sanitize_callback' => 'sanitize_text_field', 37 | 'default' => esc_html__( '+440 1234 654 953', 'fitfloss' ), 38 | ) 39 | ); 40 | 41 | // Header call button bg color 42 | Epsilon_Customizer::add_field( 43 | 'fitfloss_book_btn_bg_color', 44 | array( 45 | 'type' => 'epsilon-color-picker', 46 | 'label' => esc_html__( 'Header Button Bg Color', 'fitfloss' ), 47 | 'description' => esc_html__( 'Select the color.', 'fitfloss' ), 48 | 'sanitize_callback' => 'sanitize_text_field', 49 | 'section' => 'fitfloss_header_section', 50 | 'default' => '#ff0000', 51 | ) 52 | ); 53 | 54 | // Header call button hover bg color 55 | Epsilon_Customizer::add_field( 56 | 'fitfloss_book_btn_hvr_color', 57 | array( 58 | 'type' => 'epsilon-color-picker', 59 | 'label' => esc_html__( 'Header Call Button Hover Bg Color', 'fitfloss' ), 60 | 'description' => esc_html__( 'Select the color.', 'fitfloss' ), 61 | 'sanitize_callback' => 'sanitize_text_field', 62 | 'section' => 'fitfloss_header_section', 63 | 'default' => '#222222', 64 | ) 65 | ); 66 | 67 | // Header color sections 68 | Epsilon_Customizer::add_field( 69 | 'header_color_section', 70 | array( 71 | 'type' => 'epsilon-separator', 72 | 'label' => esc_html__( 'Header Color Section', 'fitfloss' ), 73 | 'section' => 'fitfloss_header_section', 74 | 75 | ) 76 | ); 77 | 78 | // Header background color field 79 | Epsilon_Customizer::add_field( 80 | 'fitfloss_header_bg_color', 81 | array( 82 | 'type' => 'epsilon-color-picker', 83 | 'label' => esc_html__( 'Sticky Header BG Color', 'fitfloss' ), 84 | 'description' => esc_html__( 'Select the header background color.', 'fitfloss' ), 85 | 'sanitize_callback' => 'sanitize_text_field', 86 | 'section' => 'fitfloss_header_section', 87 | 'default' => '#ff0000', 88 | ) 89 | ); 90 | 91 | // Header nav menu color field 92 | Epsilon_Customizer::add_field( 93 | 'fitfloss_header_menu_color', 94 | array( 95 | 'type' => 'epsilon-color-picker', 96 | 'label' => esc_html__( 'Header menu color', 'fitfloss' ), 97 | 'sanitize_callback' => 'sanitize_text_field', 98 | 'section' => 'fitfloss_header_section', 99 | 'default' => '#ffffff', 100 | ) 101 | ); 102 | 103 | // Header nav menu hover color field 104 | Epsilon_Customizer::add_field( 105 | 'fitfloss_header_menu_hover_color', 106 | array( 107 | 'type' => 'epsilon-color-picker', 108 | 'label' => esc_html__( 'Header menu hover color', 'fitfloss' ), 109 | 'sanitize_callback' => 'sanitize_text_field', 110 | 'section' => 'fitfloss_header_section', 111 | 'default' => '#ff0000', 112 | ) 113 | ); 114 | 115 | // Dropdown menu color field 116 | Epsilon_Customizer::add_field( 117 | 'fitfloss_dropdown_menu_color', 118 | array( 119 | 'type' => 'epsilon-color-picker', 120 | 'label' => esc_html__( 'Dropdown menu color', 'fitfloss' ), 121 | 'sanitize_callback' => 'sanitize_text_field', 122 | 'section' => 'fitfloss_header_section', 123 | 'default' => '#000000', 124 | ) 125 | ); 126 | 127 | // Dropdown menu hover color field 128 | Epsilon_Customizer::add_field( 129 | 'fitfloss_dropdown_menu_hover_color', 130 | array( 131 | 'type' => 'epsilon-color-picker', 132 | 'label' => esc_html__( 'Dropdown menu hover color', 'fitfloss' ), 133 | 'sanitize_callback' => 'sanitize_text_field', 134 | 'section' => 'fitfloss_header_section', 135 | 'default' => '#ff0000', 136 | ) 137 | ); 138 | 139 | /*********************************** 140 | * Blog Section Fields 141 | ***********************************/ 142 | 143 | // Post excerpt length field 144 | Epsilon_Customizer::add_field( 145 | 'fitfloss_excerpt_length', 146 | array( 147 | 'type' => 'text', 148 | 'label' => esc_html__( 'Set post excerpt length', 'fitfloss' ), 149 | 'description' => esc_html__( 'Set post excerpt length.', 'fitfloss' ), 150 | 'section' => 'fitfloss_blog_section', 151 | 'sanitize_callback' => 'sanitize_text_field', 152 | 'default' => '30', 153 | ) 154 | ); 155 | 156 | // Blog single page social share icon 157 | Epsilon_Customizer::add_field( 158 | 'fitfloss_blog_meta', 159 | array( 160 | 'type' => 'epsilon-toggle', 161 | 'label' => esc_html__( 'Blog page post meta show/hide', 'fitfloss' ), 162 | 'section' => 'fitfloss_blog_section', 163 | 'default' => true 164 | ) 165 | ); 166 | Epsilon_Customizer::add_field( 167 | 'fitfloss_like_btn', 168 | array( 169 | 'type' => 'epsilon-toggle', 170 | 'label' => esc_html__( 'Blog Single Page Like Button show/hide', 'fitfloss' ), 171 | 'section' => 'fitfloss_blog_section', 172 | 'default' => true 173 | ) 174 | ); 175 | Epsilon_Customizer::add_field( 176 | 'fitfloss_blog_share', 177 | array( 178 | 'type' => 'epsilon-toggle', 179 | 'label' => esc_html__( 'Blog Single Page Share show/hide', 'fitfloss' ), 180 | 'section' => 'fitfloss_blog_section', 181 | 'default' => true 182 | ) 183 | ); 184 | 185 | 186 | /*********************************** 187 | * 404 Page Section Fields 188 | ***********************************/ 189 | 190 | // 404 text #1 field 191 | Epsilon_Customizer::add_field( 192 | 'fitfloss_fof_titleone', 193 | array( 194 | 'type' => 'text', 195 | 'label' => esc_html__( '404 Text #1', 'fitfloss' ), 196 | 'section' => 'fitfloss_fof_section', 197 | 'sanitize_callback' => 'sanitize_text_field', 198 | 'default' => 'Say Hello.' 199 | ) 200 | ); 201 | // 404 text #2 field 202 | Epsilon_Customizer::add_field( 203 | 'fitfloss_fof_titletwo', 204 | array( 205 | 'type' => 'text', 206 | 'label' => esc_html__( '404 Text #2', 'fitfloss' ), 207 | 'section' => 'fitfloss_fof_section', 208 | 'sanitize_callback' => 'sanitize_text_field', 209 | 'default' => 'Say Hello.' 210 | ) 211 | ); 212 | // 404 text #1 color field 213 | Epsilon_Customizer::add_field( 214 | 'fitfloss_fof_textone_color', 215 | array( 216 | 'type' => 'epsilon-color-picker', 217 | 'label' => esc_html__( '404 Text #1 Color', 'fitfloss' ), 218 | 'sanitize_callback' => 'sanitize_text_field', 219 | 'section' => 'fitfloss_fof_section', 220 | 'default' => '#000000', 221 | ) 222 | ); 223 | // 404 text #2 color field 224 | Epsilon_Customizer::add_field( 225 | 'fitfloss_fof_texttwo_color', 226 | array( 227 | 'type' => 'epsilon-color-picker', 228 | 'label' => esc_html__( '404 Text #2 Color', 'fitfloss' ), 229 | 'sanitize_callback' => 'sanitize_text_field', 230 | 'section' => 'fitfloss_fof_section', 231 | 'default' => '#656565', 232 | ) 233 | ); 234 | // 404 background color field 235 | Epsilon_Customizer::add_field( 236 | 'fitfloss_fof_bg_color', 237 | array( 238 | 'type' => 'epsilon-color-picker', 239 | 'label' => esc_html__( '404 Page Background Color', 'fitfloss' ), 240 | 'sanitize_callback' => 'sanitize_text_field', 241 | 'section' => 'fitfloss_fof_section', 242 | 'default' => '#fff', 243 | ) 244 | ); 245 | 246 | /*********************************** 247 | * Footer Section Fields 248 | ***********************************/ 249 | 250 | // Footer Widget section 251 | Epsilon_Customizer::add_field( 252 | 'footer_widget_separator', 253 | array( 254 | 'type' => 'epsilon-separator', 255 | 'label' => esc_html__( 'Footer Widget Section', 'fitfloss' ), 256 | 'section' => 'fitfloss_footer_section', 257 | 258 | ) 259 | ); 260 | 261 | // Footer widget toggle field 262 | Epsilon_Customizer::add_field( 263 | 'fitfloss_footer_widget_toggle', 264 | array( 265 | 'type' => 'epsilon-toggle', 266 | 'label' => esc_html__( 'Footer widget show/hide', 'fitfloss' ), 267 | 'description' => esc_html__( 'Toggle to display footer widgets.', 'fitfloss' ), 268 | 'section' => 'fitfloss_footer_section', 269 | 'default' => true, 270 | ) 271 | ); 272 | 273 | // Footer Copyright section 274 | Epsilon_Customizer::add_field( 275 | 'fitfloss_footer_copyright_separator', 276 | array( 277 | 'type' => 'epsilon-separator', 278 | 'label' => esc_html__( 'Footer Copyright Section', 'fitfloss' ), 279 | 'section' => 'fitfloss_footer_section', 280 | 'default' => true, 281 | 282 | ) 283 | ); 284 | 285 | // Footer copyright text field 286 | $url = 'https://colorlib.com/'; 287 | $copyText = sprintf( __( 'Theme by %s colorlib %s Copyright © %s | All rights reserved.', 'fitfloss' ), '', '', date( 'Y' ) ); 288 | Epsilon_Customizer::add_field( 289 | 'fitfloss_footer_copyright_text', 290 | array( 291 | 'type' => 'epsilon-text-editor', 292 | 'label' => esc_html__( 'Footer copyright text', 'fitfloss' ), 293 | 'section' => 'fitfloss_footer_section', 294 | 'default' => wp_kses_post( $copyText ), 295 | ) 296 | ); 297 | 298 | 299 | // Social Profiles Show/Hide 300 | Epsilon_Customizer::add_field( 301 | 'fitfloss_social_profile_toggle', 302 | array( 303 | 'type' => 'epsilon-toggle', 304 | 'label' => esc_html__( 'Social Profiles Profile Show/Hide', 'fitfloss' ), 305 | 'section' => 'fitfloss_social_section', 306 | 'default' => true, 307 | ) 308 | ); 309 | 310 | //Social Profile links 311 | Epsilon_Customizer::add_field( 312 | 'fitfloss_social_profiles', 313 | array( 314 | 'type' => 'epsilon-repeater', 315 | 'section' => 'fitfloss_social_section', 316 | 'label' => esc_html__( 'Social Profile Links', 'fitfloss' ), 317 | 'button_label' => esc_html__( 'Add new social link', 'fitfloss' ), 318 | 'row_label' => array( 319 | 'type' => 'field', 320 | 'field' => 'social_link_title', 321 | ), 322 | 'default' => [ 323 | [ 324 | 'social_link_title' => esc_html__( 'Facebook', 'fitfloss' ), 325 | 'social_url' => '#', 326 | 'social_icon' => 'fa fa-facebook', 327 | ], 328 | [ 329 | 'social_link_title' => esc_html__( 'Twitter', 'fitfloss' ), 330 | 'social_url' => '#', 331 | 'social_icon' => 'fa fa-twitter', 332 | ], 333 | [ 334 | 'social_link_title' => esc_html__( 'Instagram', 'fitfloss' ), 335 | 'social_url' => '#', 336 | 'social_icon' => 'fa fa-instagram', 337 | ], 338 | [ 339 | 'social_link_title' => esc_html__( 'Dribbble', 'fitfloss' ), 340 | 'social_url' => '#', 341 | 'social_icon' => 'fa fa-dribbble', 342 | ], 343 | ], 344 | 'fields' => array( 345 | 'social_link_title' => array( 346 | 'label' => esc_html__( 'Title', 'fitfloss' ), 347 | 'type' => 'text', 348 | 'sanitize_callback' => 'wp_kses_post', 349 | 'default' => 'Facebook', 350 | ), 351 | 'social_url' => array( 352 | 'label' => esc_html__( 'Social URL', 'fitfloss' ), 353 | 'type' => 'text', 354 | 'sanitize_callback' => 'sanitize_text_field', 355 | 'default' => '#', 356 | ), 357 | 'social_icon' => array( 358 | 'label' => esc_html__( 'Icon', 'fitfloss' ), 359 | 'type' => 'epsilon-icon-picker', 360 | 'default' => 'fa fa-facebook', 361 | ), 362 | 363 | ), 364 | ) 365 | ); 366 | 367 | // Footer widget bg color field 368 | Epsilon_Customizer::add_field( 369 | 'fitfloss_footer_widget_bg_color', 370 | array( 371 | 'type' => 'epsilon-color-picker', 372 | 'label' => esc_html__( 'Footer Widget Bg Color', 'fitfloss' ), 373 | 'sanitize_callback' => 'sanitize_text_field', 374 | 'section' => 'fitfloss_footer_section', 375 | 'default' => '#ff0000', 376 | ) 377 | ); 378 | 379 | // Footer widget text color field 380 | Epsilon_Customizer::add_field( 381 | 'fitfloss_footer_widget_heading_color', 382 | array( 383 | 'type' => 'epsilon-color-picker', 384 | 'label' => esc_html__( 'Footer Heading Color', 'fitfloss' ), 385 | 'sanitize_callback' => 'sanitize_text_field', 386 | 'section' => 'fitfloss_footer_section', 387 | 'default' => '#ffffff', 388 | ) 389 | ); 390 | 391 | // Footer widget text color field 392 | Epsilon_Customizer::add_field( 393 | 'fitfloss_footer_widget_text_color', 394 | array( 395 | 'type' => 'epsilon-color-picker', 396 | 'label' => esc_html__( 'Footer Text Color', 'fitfloss' ), 397 | 'sanitize_callback' => 'sanitize_text_field', 398 | 'section' => 'fitfloss_footer_section', 399 | 'default' => '#ffffff', 400 | ) 401 | ); 402 | 403 | // Footer widget anchor color field 404 | Epsilon_Customizer::add_field( 405 | 'fitfloss_footer_widget_anchor_color', 406 | array( 407 | 'type' => 'epsilon-color-picker', 408 | 'label' => esc_html__( 'Footer Anchor Color', 'fitfloss' ), 409 | 'sanitize_callback' => 'sanitize_text_field', 410 | 'section' => 'fitfloss_footer_section', 411 | 'default' => '#ffffff', 412 | ) 413 | ); 414 | 415 | // Footer widget anchor hover color field 416 | Epsilon_Customizer::add_field( 417 | 'fitfloss_footer_widget_anchor_hover_color', 418 | array( 419 | 'type' => 'epsilon-color-picker', 420 | 'label' => esc_html__( 'Footer Anchor Hover Color', 'fitfloss' ), 421 | 'sanitize_callback' => 'sanitize_text_field', 422 | 'section' => 'fitfloss_footer_section', 423 | 'default' => '#ffffff', 424 | ) 425 | ); 426 | 427 | --------------------------------------------------------------------------------