????
| Current Path : /home2/morganrand/backup.morganrand.com/wp-content/themes/wanderfuls/ |
| Current File : /home2/morganrand/backup.morganrand.com/wp-content/themes/wanderfuls/functions.php |
<?php
/**
* This is where the magic happens.
*
* IMPORTANT: DO NOT EVER EDIT THIS FILE !!!!
* IMPORTANT: DO NOT EVER COPY AND PASTE ANYTHING FROM HERE TO YOUR CHILD THEME !!!
*
* Wanderfuls is a very powerful theme and virtually anything can be customized
* via a child theme. If you need any help altering a function, just let us know!
* Customizations aren't included for free but if it's a simple task I'll be sure to help :)
*
* Theme Docs: http://tbplorer-themes.com/total/docs/
*
* @package Wanderfuls WordPress Theme
* @subpackage Templates
*/
class TB_Theme_Setup {
private $template_dir;
/**
* Main Theme Class Constructor
*
* Loads all necessary classes, functions, hooks, configuration files and actions for the theme.
* Everything starts here.
*
* @since 1.6.0
*
*/
public function __construct() {
$this->template_dir = get_template_directory();
// Define globals
global $tb_theme, $tb_theme_mods, $tb_admin_help_tabs;
// Load global object file first so it can be used anywhere needed - this is important
// because when inserting VC modules we must re-run the class object at times
require_once( $this->template_dir . '/framework/classes/global-object.php' );
// Add admin help tabs?
$tb_admin_help_tabs = apply_filters('tb_admin_help_tabs', true);
// Gets all theme mods and stores them in an easily accessable var
$tb_theme_mods = get_theme_mods();
// Functions used to retrieve theme mods - must be loaded early so it can be used on all hooks.
require_once( $this->template_dir . '/framework/get_mods.php' );
// Populate the global object
// Must be done after all core functions are registered and after the WP object is set up so ID exists
// Priority of 20 is important so we can use filters at default priority via other classes
add_action('template_redirect', array($this, 'global_object'), 20);
// Defines hooks and runs actions
add_action('init', array($this, 'actions'), 0);
// Define constants
add_action('after_setup_theme', array($this, 'constants'), 1);
// Load all the theme addons - must run on this hook!
add_action('after_setup_theme', array($this, 'addons'), 2);
// Load configuration classes (post types & 3rd party plugins)
// Must load first so it can use hooks defined in the classes
add_action('after_setup_theme', array($this, 'configs'), 3);
// Load all core theme function files
add_action('after_setup_theme', array($this, 'include_functions'), 4);
// Load framework classes
add_action('after_setup_theme', array($this, 'classes'), 5);
// Load custom widgets
add_action('after_setup_theme', array($this, 'custom_widgets'), 5);
// Actions & filters
add_action('after_setup_theme', array($this, 'add_theme_support'));
// Run after switch theme
add_action('after_switch_theme', array($this, 'after_switch_theme'));
// Load scripts in the WP admin
add_action('admin_enqueue_scripts', array($this, 'admin_scripts'));
// Load theme CSS
add_action('wp_enqueue_scripts', array($this, 'theme_css'));
// Load responsive CSS - must be added last
add_action('wp_enqueue_scripts', array($this, 'responsive_css'), 99);
// Load theme js
add_action('wp_enqueue_scripts', array($this, 'theme_js'));
// Add meta viewport tag to header
add_action('wp_head', array($this, 'meta_viewport'), 1);
// Add an X-UA-Compatible header
add_filter('wp_headers', array($this, 'x_ua_compatible_headers'));
// Browser dependent CSS
add_action('wp_head', array($this, 'browser_dependent_css'));
// Loads html5 shiv script
add_action('wp_head', array($this, 'html5_shiv'));
// Outputs custom CSS to the head
add_action('wp_head', array($this, 'custom_css'), 9999);
// Outputs custom CSS for the admin
add_action('admin_head', array($this, 'admin_inline_css'));
// register sidebar widget areas
add_action('widgets_init', array($this, 'register_sidebars'));
// Add gallery metabox to portfolio
add_filter('tb_gallery_metabox_post_types', array($this, 'add_gallery_metabox'), 10);
// Define the directory URI for the gallery metabox calss
add_filter('tb_gallery_metabox_dir_uri', array($this, 'gallery_metabox_dir_uri'));
// Alter tagcloud widget to display all tags with 1em font size
add_filter('widget_tag_cloud_args', array($this, 'widget_tag_cloud_args'));
// Alter WP categories widget to display count inside a span
add_filter('wp_list_categories', array($this, 'wp_list_categories_args'));
// Exclude categories from the blog page
add_filter('pre_get_posts', array($this, 'pre_get_posts'));
// Add new social profile fields to the user dashboard
add_filter('user_contactmethods', array($this, 'add_user_social_fields'));
// Add a responsive wrapper to the WordPress oembed output
add_filter('embed_oembed_html', array($this, 'add_responsive_wrap_to_oembeds'), 99, 4);
// Allow for the use of shortcodes in the WordPress excerpt
add_filter('the_excerpt', 'shortcode_unautop');
add_filter('the_excerpt', 'do_shortcode');
// Make sure the wp_get_attachment_url() function returns correct page request (HTTP or HTTPS)
add_filter('wp_get_attachment_url', array($this, 'honor_ssl_for_attachments'));
// Tweak the default password protection output form
add_filter('the_password_form', array($this, 'custom_password_protected_form'));
// Exclude posts with custom links from the next and previous post links
add_filter('get_previous_post_join', array($this, 'prev_next_join'));
add_filter('get_next_post_join', array($this, 'prev_next_join'));
add_filter('get_previous_post_where', array($this, 'prev_next_where'));
add_filter('get_next_post_where', array($this, 'prev_next_where'));
// Redirect posts with custom links
add_filter('template_redirect', array($this, 'redirect_custom_links'));
// Remove tb_term_data when a term is removed
add_action('delete_term', array($this, 'delete_term'), 5);
// Remove emoji scripts
if (tb_get_mod('remove_emoji_scripts_enable', true)) {
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_styles', 'print_emoji_styles');
}
// Adds classes the post class
add_filter('post_class', array($this, 'post_class'));
// Add schema markup to the authors post link
add_filter('the_author_posts_link', array($this, 'the_author_posts_link'));
}
// End constructor
/**
* Defines the constants for use within the theme.
*
* @since 2.0.0
*/
public function constants() {
// Theme version
define('TB_THEME_VERSION', '1.0.5');
// Visual Composer supported version
define('TB_VC_SUPPORTED_VERSION', '4.11.2');
// Define branding constant based on theme options
define('TB_THEME_BRANDING', tb_get_mod('theme_branding', 'Wanderfuls'));
// Theme Panel slug
define('TB_THEME_PANEL_SLUG', 'tb-panel');
define('TB_ADMIN_PANEL_HOOK_PREFIX', 'theme-panel_page_' . TB_THEME_PANEL_SLUG);
// Paths to the parent theme directory
define('TB_THEME_DIR', $this->template_dir);
define('TB_THEME_URI', get_template_directory_uri());
// Javascript and CSS Paths
define('TB_JS_DIR_URI', TB_THEME_URI . '/js/');
define('TB_CSS_DIR_URI', TB_THEME_URI . '/css/');
// Framework Paths
define('TB_FRAMEWORK_DIR', TB_THEME_DIR . '/framework/');
define('TB_FRAMEWORK_DIR_URI', TB_THEME_URI . '/framework/');
define('TB_ClASSES', TB_FRAMEWORK_DIR . '/classes/');
// Classes directory
define('TB_ClASSES_DIR', TB_FRAMEWORK_DIR . '/classes/');
// Check if plugins are active
define('TB_VC_ACTIVE', class_exists('Vc_Manager'));
define('TB_BBPRESS_ACTIVE', class_exists('bbPress'));
define('TB_WOOCOMMERCE_ACTIVE', class_exists('WooCommerce'));
define('TB_REV_SLIDER_ACTIVE', class_exists('RevSlider'));
define('TB_LAYERSLIDER_ACTIVE', function_exists('lsSliders'));
define('TB_WPML_ACTIVE', class_exists('SitePress'));
define('TB_TRIBE_EVENTS_CALENDAR_ACTIVE', class_exists('Tribe__Events__Main'));
// Active post types
define('TB_PORTFOLIO_IS_ACTIVE', tb_get_mod('portfolio_enable', true));
define('TB_STAFF_IS_ACTIVE', tb_get_mod('staff_enable', true));
define('TB_TESTIMONIALS_IS_ACTIVE', tb_get_mod('testimonials_enable', true));
// Visual Composer
define('TB_VCEX_DIR', TB_FRAMEWORK_DIR . 'visual-composer/');
define('TB_VCEX_DIR_URI', TB_FRAMEWORK_DIR_URI . 'visual-composer/');
}
/**
* Defines all theme hooks and runs all needed actions for theme hooks.
*
* @since 2.0.0
*/
public static function actions() {
$dir = TB_FRAMEWORK_DIR;
// Perform actions after updating
require_once( $dir . 'updates/after-update.php' );
// Register hooks (needed in admin for Custom Actions panel)
require_once( $dir . 'hooks/hooks.php' );
// Front-end stuff
if (!is_admin()) {
require_once( $dir . 'hooks/actions.php' );
require_once( $dir . 'hooks/partials.php' );
}
}
/**
* Theme addons
*
* @since 2.0.0
*/
public static function addons() {
require_once( TB_FRAMEWORK_DIR . 'addons/theme-panel.php' );
}
/**
* Configs for post types and 3rd party plugins.
*
* @since 2.0.0
*/
public function configs() {
$dir = TB_FRAMEWORK_DIR;
// Portfolio
if (TB_PORTFOLIO_IS_ACTIVE) {
require_once( $dir . 'portfolio/portfolio-config.php' );
}
// Staff
if (TB_STAFF_IS_ACTIVE) {
require_once( $dir . 'staff/staff-config.php' );
}
// Testimonias
if (TB_TESTIMONIALS_IS_ACTIVE) {
require_once( $dir . 'testimonials/testimonials-config.php' );
}
// WooCommerce
if (TB_WOOCOMMERCE_ACTIVE) {
require_once( $dir . 'woocommerce/woocommerce-config.php' );
}
// Visual Composer
if (TB_VC_ACTIVE) {
require_once( $dir . 'visual-composer/vc-config.php' );
}
// The Events Calendar
if (TB_TRIBE_EVENTS_CALENDAR_ACTIVE) {
require_once( $dir . 'config/tribe-events.php' );
}
// Revolution slider
if (TB_REV_SLIDER_ACTIVE) {
require_once( $dir . 'config/revslider.php' );
}
// WPML
if (TB_WPML_ACTIVE) {
require_once( $dir . 'config/wpml.php' );
}
// Polylang
if (class_exists('Polylang')) {
require_once( $dir . 'config/polylang.php' );
}
// bbPress
if (TB_BBPRESS_ACTIVE) {
require_once( $dir . 'config/bbpress.php' );
}
// Sensei
if (function_exists('Sensei')) {
require_once( $dir . 'config/sensei.php' );
}
}
/**
* Framework functions
*
* @since 2.0.0
*/
public function include_functions() {
$dir = TB_FRAMEWORK_DIR;
require_once( $dir . 'deprecated.php' );
require_once( $dir . 'core.php' );
require_once( $dir . 'conditionals.php' );
require_once( $dir . 'body-classes.php' );
require_once( $dir . 'arrays.php' );
require_once( $dir . 'fonts.php' );
require_once( $dir . 'shortcodes/shortcodes.php' );
require_once( $dir . 'overlays.php' );
require_once( $dir . 'togglebar.php' );
require_once( $dir . 'topbar.php' );
require_once( $dir . 'header-functions.php' );
require_once( $dir . 'search-functions.php' );
require_once( $dir . 'title.php' );
require_once( $dir . 'page-header.php' );
require_once( $dir . 'menu-functions.php' );
require_once( $dir . 'excerpts.php' );
require_once( $dir . 'comments-callback.php' );
require_once( $dir . 'social-share.php' );
require_once( $dir . 'blog-functions.php' );
require_once( $dir . 'pagination.php' );
require_once( $dir . 'tinymce.php' );
if (tb_get_mod('blog_dash_thumbs', true)) {
require_once( $dir . 'thumbnails/dashboard-thumbnails.php' );
}
}
/**
* Framework Classes
*
* @since 2.0.0
*/
public function classes() {
// Classes Dir
$dir = TB_ClASSES_DIR;
// Sanitize input
require_once( $dir . 'sanitize-data.php' );
// iLightbox
require_once( $dir . 'ilightbox.php' );
// Image Resize
require_once( $dir . 'image-resize.php' );
// Gallery metabox
require_once( $dir . 'gallery-metabox/gallery-metabox.php' );
// Term colors - coming soon!
//require_once( $dir .'term-colors.php' );
// Post Series
if (tb_get_mod('post_series_enable', true)) {
require_once( $dir . 'post-series.php' );
}
// Custom WP header
if (tb_get_mod('header_image_enable')) {
require_once( $dir . 'custom-header.php' );
}
// Auto updates
require_once( $dir . 'wp-updates-theme.php' );
// Recommend plugins
if (tb_get_mod('recommend_plugins_enable', true)) {
require_once( $dir . 'class-tgm-plugin-activation.php' );
require_once( TB_FRAMEWORK_DIR . 'config/tgm-plugin-activation.php' );
}
// Term thumbnails
if (tb_get_mod('term_thumbnails_enable', true)) {
require_once( $dir . 'tax-thumbnails.php' );
}
// Remove post type slugs
if (tb_get_mod('remove_posttype_slugs')) {
require_once( $dir . 'remove-post-type-slugs.php' );
}
// Image sizes panel
if (tb_get_mod('image_sizes_enable', true)) {
require_once( $dir . 'image-sizes.php' );
}
// Admin only classes
if (is_admin()) {
// Category meta
require_once( $dir . 'category-meta.php' );
// Metabox - custom fields
require_once( $dir . 'metabox.php' );
// Custom attachment fields
require_once( $dir . 'attachment-fields.php' );
}
// Front-end classes
else {
// Accent color
require_once( $dir . 'accent-color.php' );
// Site layouts
require_once( $dir . 'site-layouts.php' );
// Site backgrounds
require_once( $dir . 'site-backgrounds.php' );
// Advanced styling
require_once( $dir . 'advanced-styling.php' );
// Breadcrumbs class
require_once( $dir . 'breadcrumbs.php' );
}
// Customizer must load last to take advantage of all functions before it
require_once( TB_FRAMEWORK_DIR . 'customizer/customizer.php' );
}
/**
* Include all custom widget classes
*
* @since 2.0.0
*/
public static function custom_widgets() {
// Define array of custom widgets for the theme
$widgets = apply_filters('tb_custom_widgets', array(
'social-fontawesome',
'social',
'simple-menu',
'modern-menu',
'flickr',
'video',
'posts-thumbnails',
'posts-grid',
'posts-icons',
'comments-avatar',
));
// Loop through widgets and load their files
$dir = TB_ClASSES_DIR;
foreach ($widgets as $widget) {
require_once( $dir . 'widgets/' . $widget . '.php' );
}
}
/**
* Populate the $tb_theme global object.
*
* This helps speed things up by calling core functions only once and saving them in memory.
*
* @since 2.0.0
*/
public static function global_object() {
// Get global object
global $tb_theme;
// Run global object class and update global var
$tb_theme = new TB_Global_Theme_Object();
// Apply filters to object var for advanced tweaking
$tb_theme = apply_filters('tb_global_theme_object', $tb_theme);
}
/**
* Adds basic theme support functions and registers the nav menus
*
* @since 1.6.0
*/
public static function add_theme_support() {
// Get globals
global $content_width;
// Set content width based on theme's default design
if (!isset($content_width)) {
$content_width = 980;
}
// Menus
$menus = array(
'topbar_menu' => __('Top Bar', 'tb'),
'main_menu' => __('Main', 'tb'),
'mobile_menu_alt' => __('Mobile Menu Alternative', 'tb'),
'footer_menu' => __('Footer', 'tb'),
);
// Add mobile icons menu nav
if (in_array(tb_get_mod('mobile_menu_toggle_style', 'icon_buttons'), array('icon_buttons', 'icon_buttons_under_logo'))) {
$menus['mobile_menu'] = __('Mobile Icons', 'tb');
}
// Register navigation menus
register_nav_menus($menus);
function print_filters_for($hook = '') {
global $wp_filter;
if (empty($hook) || !isset($wp_filter[$hook]))
return;
print '<pre>';
print_r($wp_filter[$hook]);
print '</pre>';
}
function footer_function_list_fn($atts) {
ob_start();
print_filters_for('wp_footer');
return ob_get_clean();
}
add_shortcode('footer_function_list', 'footer_function_list_fn');
function desktop_testimonial_function($atts) {
ob_start();
$test_query = new WP_Query(array(
'post_type' => 'reviews',
'posts_per_page' => 3,
));
?>
<?php if ($test_query->have_posts()) : ?>
<div class="row">
<?php while ($test_query->have_posts()) : $test_query->the_post(); ?>
<div class="col-md-4">
<div style="position: relative;padding-bottom: 70px;margin-left: -10px;margin-right: -10px;" class="des-testimonial-item">
<h1 style="text-align: center">"<?php the_title(); ?>"</h1>
<hr>
<?php the_content(); ?>
<div style="position: absolute;right:15px;bottom:30px;" class="reviewer-details">
<p style="text-align: right;font-size:18px"><strong>– <?php echo esc_attr(get_post_meta(get_the_ID(), 'rv_name', true)); ?></strong><br><?php echo esc_attr(get_post_meta(get_the_ID(), 'rv_city', true)); ?></p>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php
return ob_get_clean();
}
add_shortcode('des_testimonial', 'desktop_testimonial_function');
function lucy_orange_scripts() {
?>
<script type='text/javascript'>
window.__lo_site_id = 61520;
(function () {
var wa = document.createElement('script');
wa.type = 'text/javascript';
wa.async = true;
wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wa, s);
})();
</script>
<?php
}
add_action('wp_head', 'lucy_orange_scripts');
function facebook_scripts() {
?>
<script>
window.fbAsyncInit = function () {
FB.init({
appId: '104046656996943',
cookie: true,
xfbml: true,
version: 'v2.8'
});
FB.AppEvents.logPageView();
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<?php
}
add_action('wp_head', 'facebook_scripts');
function color_mobile_menu_style() {
?>
<style>
.prodcuts_menu_1{
display: <?php echo is_wfm_products_1() == 1 ? 'block' : 'none'; ?>;
}
.prodcuts_menu_2{
display: <?php echo is_wfm_products_2() == 1 ? 'block' : 'none'; ?>;
}
.prodcuts_menu_3{
display: <?php echo is_wfm_products_3() == 1 ? 'block' : 'none'; ?>;
}
.discounts_menu_1{
display: <?php echo is_wfm_discounts_1() == 1 ? 'block' : 'none'; ?>;
}
.discounts_menu_2{
display: <?php echo is_wfm_discounts_2() == 1 ? 'block' : 'none'; ?>;
}
</style>
<?php
}
add_action('wp_head', 'color_mobile_menu_style');
function favor_big_animation_function($atts) {
ob_start();
?>
<div id="favorbig" class="fbig">
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer15.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer02.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer03.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer04.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer05.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer06.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer07.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer08.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer09.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer10.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer12.png"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fbig/small_10_pink_pompoms_dissolveLayer13.png"/>
</div>
<?php
return ob_get_clean();
}
add_shortcode('favor_big_animation', 'favor_big_animation_function');
function favor6_animation_function($atts) {
ob_start();
?>
<!-- Favor 6 -->
<div id="favor6" class="fv6">
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer7.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer1.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer2.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer3.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer4.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer5.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv6/small_06_pink_pompoms_dissolvelayer6.jpg"/>
</div>
<?php
return ob_get_clean();
}
add_shortcode('favor6_animation', 'favor6_animation_function');
function facebook_shortcode_fn($atts) {
ob_start();
echo get_scp_widget();
return ob_get_clean();
}
add_shortcode('facebook_c_shortcode', 'facebook_shortcode_fn');
function favor8_animation_function($atts) {
ob_start();
?>
<!-- Favor 8 -->
<div id="favor8" class="fv8">
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer9.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer1.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer2.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer3.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer4.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer5.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer6.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer7.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv8/small_08_pink_pompoms_dissolvelayer8.jpg"/>
</div>
<?php
return ob_get_clean();
}
add_shortcode('favor8_animation', 'favor8_animation_function');
function favor9_animation_function($atts) {
ob_start();
?>
<!-- Favor 9 -->
<div id="favor9" class="fv9">
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer10.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer1.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer2.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer3.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer4.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer5.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer6.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer7.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer8.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv9/small_09_pink_pompoms_dissolvelayer9.jpg"/>
</div>
<?php
return ob_get_clean();
}
add_shortcode('favor9_animation', 'favor9_animation_function');
function favor10_animation_function($atts) {
ob_start();
?>
<!-- Favor 10 -->
<div id="favor10" class="fv10">
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer12.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer03.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer05.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer06.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer07.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer08.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer09.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer10.jpg"/>
<img src="<?php echo get_template_directory_uri(); ?>/images/fv10/small_10_pink_pompoms_dissolvelayer11.jpg"/>
</div>
<?php
return ob_get_clean();
}
add_shortcode('favor10_animation', 'favor10_animation_function');
function faq_item_function_shortcode($atts) {
ob_start();
?>
<div class="vc_row wpb_row vc_inner vc_row-fluid vc_custom_1499668453659">
<div class="wpb_column vc_column_container vc_col-sm-4 vc_custom_1499688435760" style="margin-bottom: -30px !important;">
<div class="wpb_wrapper tb-vc-column-wrapper tb-clr">
<?php
$first_col_query = new WP_Query(array(
'post_type' => 'faqs',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'wf_faq_coloumn',
'value' => '1st_coloumn'
),
),
));
?>
<?php while ($first_col_query->have_posts()) : $first_col_query->the_post(); ?>
<div class="vc_toggle vc_toggle_default vc_toggle_color_default vc_toggle_size_md faq-item">
<div class="vc_toggle_title"><h4><?php the_title(); ?></h4><i class="vc_toggle_icon"></i></div>
<div class="vc_toggle_content" style="overflow: hidden; display: none;"><?php the_content(); ?></div>
</div>
<?php endwhile; ?>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-4 vc_custom_1499688463598" style="margin-bottom: -30px !important;">
<div class="wpb_wrapper tb-vc-column-wrapper tb-clr">
<?php
$second_coloumn_query = new WP_Query(array(
'post_type' => 'faqs',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'wf_faq_coloumn',
'value' => '2nd_coloumn'
),
),
));
?>
<?php while ($second_coloumn_query->have_posts()) : $second_coloumn_query->the_post(); ?>
<div class="vc_toggle vc_toggle_default vc_toggle_color_default vc_toggle_size_md faq-item">
<div class="vc_toggle_title"><h4><?php the_title(); ?></h4><i class="vc_toggle_icon"></i></div>
<div class="vc_toggle_content" style="overflow: hidden; display: none;"><?php the_content(); ?></div>
</div>
<?php endwhile; ?>
</div>
</div>
<div class="wpb_column vc_column_container vc_col-sm-4 vc_custom_1499688456830" style="margin-bottom: -30px !important;">
<div class="wpb_wrapper tb-vc-column-wrapper tb-clr">
<?php
$third_coloumn_query = new WP_Query(array(
'post_type' => 'faqs',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'wf_faq_coloumn',
'value' => '3rd_coloumn'
),
),
));
?>
<?php while ($third_coloumn_query->have_posts()) : $third_coloumn_query->the_post(); ?>
<div class="vc_toggle vc_toggle_default vc_toggle_color_default vc_toggle_size_md faq-item">
<div class="vc_toggle_title"><h4><?php the_title(); ?></h4><i class="vc_toggle_icon"></i></div>
<div class="vc_toggle_content" style="overflow: hidden; display: none;"><?php the_content(); ?></div>
</div>
<?php endwhile; ?>
</div>
</div>
</div>
<?php
return ob_get_clean();
}
add_shortcode('faqs_item', 'faq_item_function_shortcode');
function desktop_testimonial_function2($atts) {
ob_start();
$test_query = new WP_Query(array(
'post_type' => 'reviews',
'posts_per_page' => 9,
));
?>
<?php if ($test_query->have_posts()) : ?>
<div class="row">
<?php while ($test_query->have_posts()) : $test_query->the_post(); ?>
<div class="col-md-4">
<div style="position: relative;padding-bottom: 70px;margin-left: -10px;margin-right: -10px;" class="des-testimonial-item">
<h1 style="text-align: center">"<?php the_title(); ?>"</h1>
<hr>
<?php the_content(); ?>
<div style="position: absolute;right:15px;bottom:30px;" class="reviewer-details">
<p style="text-align: right;font-size:18px"><strong>– <?php echo esc_attr(get_post_meta(get_the_ID(), 'rv_name', true)); ?></strong><br><?php echo esc_attr(get_post_meta(get_the_ID(), 'rv_city', true)); ?></p>
</div>
</div>
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>
<?php
return ob_get_clean();
}
add_shortcode('des_testimonial2', 'desktop_testimonial_function2');
function mobile_testimonial_function($atts) {
ob_start();
$test_query = new WP_Query(array(
'post_type' => 'reviews',
'posts_per_page' => 9,
));
?>
<?php if ($test_query->have_posts()) : ?>
<div class="row">
<div class="col-md-12">
<div class="owl-carousel default testimonial-slider">
<?php while ($test_query->have_posts()) : $test_query->the_post(); ?>
<div class="mob-testimonial-item">
<h1 style="text-align: center">"<?php the_title(); ?>"</h1>
<hr>
<?php the_content(); ?>
<div class="reviewer-details">
<p style="text-align: right;font-size:18px"><strong>– <?php echo esc_attr(get_post_meta(get_the_ID(), 'rv_name', true)); ?></strong><br><?php echo esc_attr(get_post_meta(get_the_ID(), 'rv_city', true)); ?></p>
</div>
</div>
<?php endwhile; ?>
</div>
</div>
</div>
<?php endif; ?>
<?php
return ob_get_clean();
}
add_shortcode('mob_testimonial', 'mobile_testimonial_function');
add_action('init', 'post_reviews_init');
function my_password_form() {
global $post;
$label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID );
ob_start();
?>
<div class="password-protection-box clr">
<form action="<?php echo esc_url(site_url('wp-login.php?action=postpass', 'login_post')); ?>" method="post">
<h2>Password Protected</h2>
<p>This content is password protected. To view it please enter your password below:</p>
<p> <input name="post_password" id="<?php echo $label; ?>" size="20" maxlength="20" placeholder="Password" type="password"><input name="Submit" value="Enter" type="submit"><a class="color-page-link" href="/colors.html">Go to COLORS</a><br>
</p></form>
</div>
<?php
return ob_get_clean();
}
add_filter('the_password_form', 'my_password_form');
/* Page switcher */
add_action('admin_menu', 'wf_add_admin_menu');
add_action('admin_init', 'wf_settings_init');
function wf_add_admin_menu() {
add_menu_page('Wonderfuls Page Switch', 'Wonderfuls Page Switch', 'manage_options', 'wonderfuls_page_switch', 'wf_options_page');
}
function wf_settings_init() {
register_setting('pluginPage', 'wf_settings');
add_settings_section(
'wf_pluginPage_section', __('', 'wonderfuls'), 'wf_settings_section_callback', 'pluginPage'
);
add_settings_field(
'wf_select_field_0', __('Products or Discounts Page', 'wonderfuls'), 'wf_select_field_0_render', 'pluginPage', 'wf_pluginPage_section'
);
add_settings_field(
'wf_select_field_1', __('Choose Products Version', 'wonderfuls'), 'wf_select_field_1_render', 'pluginPage', 'wf_pluginPage_section'
);
add_settings_field(
'wf_select_field_2', __('Choose Discounts Version', 'wonderfuls'), 'wf_select_field_2_render', 'pluginPage', 'wf_pluginPage_section'
);
}
function wf_select_field_0_render() {
$options = get_option('wf_settings');
?>
<select id="select_1" name='wf_settings[wf_select_field_0]'>
<option value='products' <?php selected($options['wf_select_field_0'], 'products'); ?>>Products</option>
<option value='discounts' <?php selected($options['wf_select_field_0'], 'discounts'); ?>>Discounts</option>
</select>
<?php
}
function wf_select_field_1_render() {
$options = get_option('wf_settings');
?>
<select id="select_2" name='wf_settings[wf_select_field_1]'>
<option value='products1' <?php selected($options['wf_select_field_1'], 'products1'); ?>>Products A</option>
<option value='products2' <?php selected($options['wf_select_field_1'], 'products2'); ?>>Products B</option>
<option value='products3' <?php selected($options['wf_select_field_1'], 'products3'); ?>>Products C</option>
</select>
<?php
}
function wf_select_field_2_render() {
$options = get_option('wf_settings');
?>
<select id="select_3" name='wf_settings[wf_select_field_2]'>
<option value='discounts1' <?php selected($options['wf_select_field_2'], 'discounts1'); ?>>Discounts A</option>
<option value='discounts2' <?php selected($options['wf_select_field_2'], 'discounts2'); ?>>Discounts B</option>
</select>
<?php
}
function wf_settings_section_callback() {
echo __('', 'wonderfuls');
}
function wf_options_page() {
?>
<form class="page_switch" action='options.php' method='post'>
<h2>Wonderfuls Page Switcher</h2>
<?php
settings_fields('pluginPage');
do_settings_sections('pluginPage');
?>
<input type="submit" name="submit" id="submit" class="button button-primary" value="Save Changes" />
<button type="reset" id="reset" class="button">Reset</button>
</form>
<?php
}
add_action('admin_footer', 'page_switch_enqueue');
function page_switch_enqueue() {
?>
<script>
jQuery(document).ready(function ($) {
$('#reset').click(function () {
$('#select_1 option').attr('selected', false);
$('#select_2 option').attr('selected', false);
$('#select_3 option').attr('selected', false);
$('#select_4 option').attr('selected', false);
});
});
</script>
<?php
}
function is_wfm_products_1() {
$options = get_option('wf_settings');
$val = $options['wf_select_field_0'];
$val_sub = $options['wf_select_field_1'];
if ($val == 'products' && $val_sub == 'products1') {
return true;
} else {
return false;
}
}
function is_wfm_products_2() {
$options = get_option('wf_settings');
$val = $options['wf_select_field_0'];
$val_sub = $options['wf_select_field_1'];
if ($val == 'products' && $val_sub == 'products2') {
return true;
} else {
return false;
}
}
function is_wfm_products_3() {
$options = get_option('wf_settings');
$val = $options['wf_select_field_0'];
$val_sub = $options['wf_select_field_1'];
if ($val == 'products' && $val_sub == 'products3') {
return true;
} else {
return false;
}
}
function is_wfm_discounts_1() {
$options = get_option('wf_settings');
$val = $options['wf_select_field_0'];
$val_sub = $options['wf_select_field_2'];
if ($val == 'discounts' && $val_sub == 'discounts1') {
return true;
} else {
return false;
}
}
function is_wfm_discounts_2() {
$options = get_option('wf_settings');
$val = $options['wf_select_field_0'];
$val_sub = $options['wf_select_field_2'];
if ($val == 'discounts' && $val_sub == 'discounts2') {
return true;
} else {
return false;
}
}
/**
* Register a book post type.
*
* @link http://codex.wordpress.org/Function_Reference/register_post_type
*/
function post_reviews_init() {
$labels = array(
'name' => _x('Reviews', 'post type general name', 'your-plugin-textdomain'),
'singular_name' => _x('Review', 'post type singular name', 'your-plugin-textdomain'),
'menu_name' => _x('Reviews', 'admin menu', 'your-plugin-textdomain'),
'name_admin_bar' => _x('Review', 'add new on admin bar', 'your-plugin-textdomain'),
'add_new' => _x('Add New', 'Review', 'your-plugin-textdomain'),
'add_new_item' => __('Add New Review', 'your-plugin-textdomain'),
'new_item' => __('New Review', 'your-plugin-textdomain'),
'edit_item' => __('Edit Review', 'your-plugin-textdomain'),
'view_item' => __('View Review', 'your-plugin-textdomain'),
'all_items' => __('All Reviews', 'your-plugin-textdomain'),
'search_items' => __('Search Reviews', 'your-plugin-textdomain'),
'parent_item_colon' => __('Parent Reviews:', 'your-plugin-textdomain'),
'not_found' => __('No Reviews found.', 'your-plugin-textdomain'),
'not_found_in_trash' => __('No Reviews found in Trash.', 'your-plugin-textdomain')
);
$args = array(
'labels' => $labels,
'description' => __('Description.', 'your-plugin-textdomain'),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'review'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title', 'editor')
);
register_post_type('reviews', $args);
}
function post_faqs_init() {
$labels = array(
'name' => _x('Faqs', 'post type general name', 'your-plugin-textdomain'),
'singular_name' => _x('Faq', 'post type singular name', 'your-plugin-textdomain'),
'menu_name' => _x('Faqs', 'admin menu', 'your-plugin-textdomain'),
'name_admin_bar' => _x('Faq', 'add new on admin bar', 'your-plugin-textdomain'),
'add_new' => _x('Add New', 'Faq', 'your-plugin-textdomain'),
'add_new_item' => __('Add New Faq', 'your-plugin-textdomain'),
'new_item' => __('New Faq', 'your-plugin-textdomain'),
'edit_item' => __('Edit Faq', 'your-plugin-textdomain'),
'view_item' => __('View Faq', 'your-plugin-textdomain'),
'all_items' => __('All Faqs', 'your-plugin-textdomain'),
'search_items' => __('Search Faqs', 'your-plugin-textdomain'),
'parent_item_colon' => __('Parent Faqs:', 'your-plugin-textdomain'),
'not_found' => __('No Faqs found.', 'your-plugin-textdomain'),
'not_found_in_trash' => __('No Faqs found in Trash.', 'your-plugin-textdomain')
);
$args = array(
'labels' => $labels,
'description' => __('Description.', 'your-plugin-textdomain'),
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array('slug' => 'faqs'),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_icon' => 'dashicons-format-chat',
'menu_position' => null,
'supports' => array('title', 'editor')
);
register_post_type('faqs', $args);
}
add_action('init', 'post_faqs_init');
/* * * faqs metabox *** */
function faqs_metabox() {
add_meta_box(
'Faqs Coloumn', __('Faqs', 'nuliterature'), 'faqs_callback_function', 'faqs', 'upper_2', 'high'
);
}
add_action('add_meta_boxes', 'faqs_metabox');
function faqs_callback_function($post) {
wp_nonce_field('faqs_metabox_action', 'faqs_metabox_nonce_name');
?>
<div class="inside">
<?php $wf_faq_coloumn = esc_attr(get_post_meta($post->ID, 'wf_faq_coloumn', true)); ?>
<p><label for="wf_faq_coloumn">Select Coloumn</label></p>
<p> <select name="wf_faq_coloumn" id="wf_faq_coloumn" class="widefat">
<option <?php echo $wf_faq_coloumn == '1st_coloumn' ? 'selected' : ''; ?> value="1st_coloumn">1st Coloumn</option>
<option <?php echo $wf_faq_coloumn == '2nd_coloumn' ? 'selected' : ''; ?> value="2nd_coloumn">2nd Coloumn</option>
<option <?php echo $wf_faq_coloumn == '3rd_coloumn' ? 'selected' : ''; ?> value="3rd_coloumn">3rd Coloumn</option>
</select>
</div>
<?php
}
function save_faqs_metabox_data($post_id) {
if (if_user_can_save_faqs_data($post_id, 'faqs_metabox_nonce_name')) {
if (isset($_POST['wf_faq_coloumn'])) {
$meta_value = stripslashes(strip_tags($_POST['wf_faq_coloumn']));
update_post_meta($post_id, 'wf_faq_coloumn', $meta_value);
}
}
}
add_action('save_post', 'save_faqs_metabox_data');
function if_user_can_save_faqs_data($post_id, $nonce) {
// this is not an autosave
$r_autosave = wp_is_post_autosave($post_id);
// this is not an Revison
$r_revision = wp_is_post_revision($post_id);
//check if the nonce is valid
$r_is_valid_nonce = isset($_POST[$nonce]) && wp_verify_nonce($_POST[$nonce], 'faqs_metabox_action');
// return true if the user is able to save data
return !($r_autosave || $r_revision ) && $r_is_valid_nonce;
}
function faq_move_deck() {
# Get the globals:
global $post, $wp_meta_boxes;
# Output the "advanced" meta boxes:
do_meta_boxes(get_current_screen(), 'upper_2', $post);
# Remove the initial "advanced" meta boxes:
unset($wp_meta_boxes['post']['faqs']);
}
add_action('edit_form_after_title', 'faq_move_deck');
/*
*
* Meta boxes
*
*
*/
function foo_move_deck() {
# Get the globals:
global $post, $wp_meta_boxes;
# Output the "advanced" meta boxes:
do_meta_boxes(get_current_screen(), 'upper', $post);
# Remove the initial "advanced" meta boxes:
unset($wp_meta_boxes['post']['reviews']);
}
add_action('edit_form_after_title', 'foo_move_deck');
function reviews_metabox() {
add_meta_box(
'Reviews Details', __('Reviews', 'nuliterature'), 'reviews_callback_function', 'reviews', 'upper', 'high'
);
}
add_action('add_meta_boxes', 'reviews_metabox');
/* === First Year Result Metabox === */
function reviews_callback_function($post) {
wp_nonce_field('reviews_metabox_action', 'reviews_metabox_nonce_name');
?>
<div class="inside">
<p><label for="1st_regno">Reviewer Name</label></p>
<p><input type="text" name="rv_name" value="<?php echo esc_attr(get_post_meta($post->ID, 'rv_name', true)); ?>" id="rv_name" class="widefat" /></p>
<p><label for="1st_regno">Reviewer City</label></p>
<p><input type="text" name="rv_city" value="<?php echo esc_attr(get_post_meta($post->ID, 'rv_city', true)); ?>" id="rv_city" class="widefat" /></p>
</div>
<?php
}
function save_metabox_data($post_id) {
if (if_user_can_save_data($post_id, 'reviews_metabox_nonce_name')) {
if (isset($_POST['rv_name'])) {
$meta_value = stripslashes(strip_tags($_POST['rv_name']));
update_post_meta($post_id, 'rv_name', $meta_value);
}
if (isset($_POST['rv_city'])) {
$meta_value = stripslashes(strip_tags($_POST['rv_city']));
update_post_meta($post_id, 'rv_city', $meta_value);
}
}
}
add_action('save_post', 'save_metabox_data');
function if_user_can_save_data($post_id, $nonce) {
// this is not an autosave
$r_autosave = wp_is_post_autosave($post_id);
// this is not an Revison
$r_revision = wp_is_post_revision($post_id);
//check if the nonce is valid
$r_is_valid_nonce = isset($_POST[$nonce]) && wp_verify_nonce($_POST[$nonce], 'reviews_metabox_action');
// return true if the user is able to save data
return !($r_autosave || $r_revision ) && $r_is_valid_nonce;
}
// Apply filters for easier editing
$menus = apply_filters('tb_nav_menus', $menus);
register_nav_menus(array(
'sticky_menu' => 'Sticky Menu'
));
// Load text domain
load_theme_textdomain('tb', TB_THEME_DIR . '/languages');
// Declare theme support
add_theme_support('post-formats', array('video', 'gallery', 'audio', 'quote', 'link'));
add_theme_support('automatic-feed-links');
add_theme_support('post-thumbnails');
add_theme_support('html5');
add_theme_support('woocommerce');
add_theme_support('title-tag');
add_theme_support('yoast-seo-breadcrumbs');
// Enable excerpts for pages.
add_post_type_support('page', 'excerpt');
// Add styles to the WP editor
add_editor_style('css/editor-style.css?ver=5.4');
}
/**
* Functions called after theme switch
*
* @since 1.6.0
*/
public static function after_switch_theme() {
flush_rewrite_rules();
delete_metadata('user', null, 'tgmpa_dismissed_notice_tb_theme', null, true);
}
/**
* Adds the meta tag to the site header
*
* @since 1.6.0
*/
public function meta_viewport() {
// Responsive viewport viewport
if (tb_global_obj('responsive')) {
$viewport = '<meta name="viewport" content="width=device-width, initial-scale=1">';
}
// Non responsive meta viewport
else {
$width = intval(tb_get_mod('main_container_width', '980'));
$width = $width ? $width : '980';
$viewport = '<meta name="viewport" content="width=' . $width . '" />';
}
// Apply filters to the meta viewport for child theme tweaking
echo apply_filters('tb_meta_viewport', $viewport);
}
/**
* Load scripts in the WP admin
*
* @since 1.6.0
*/
public function admin_scripts() {
wp_enqueue_style('tb-font-awesome', TB_CSS_DIR_URI . 'font-awesome.min.css');
}
/**
* Returns all CSS needed for the front-end
*
* @since 1.6.0
*/
public static function theme_css() {
// Front end only
if (is_admin()) {
return;
}
// Define dir
$dir = TB_CSS_DIR_URI;
$theme_version = TB_THEME_VERSION;
// Remove other font awesome scripts
wp_deregister_style('font-awesome');
wp_deregister_style('fontawesome');
// Load font awesome script everywhere except the front-end composer because the js_composer already adds it
wp_enqueue_style('tb-font-awesome', $dir . 'font-awesome.min.css', false, '4.3.0');
// Register hover-css
wp_register_style('tb-hover-animations', $dir . 'hover-css.min.css', false, '2.0.1');
// LayerSlider
if (TB_LAYERSLIDER_ACTIVE) {
wp_enqueue_style('tb-layerslider', $dir . 'tb-layerslider.css', false, $theme_version);
}
// Main Style.css File
wp_enqueue_style('tb-style', get_stylesheet_uri(), false, $theme_version);
// Load RTL.css if enabled
if (is_RTL()) {
wp_enqueue_style('tb-rtl', $dir . 'rtl.css', array('tb-style'), false);
}
}
/**
* Loads responsive css very last after all styles.
*
* @since 1.6.0
*/
public static function responsive_css() {
if (tb_global_obj('responsive')) {
wp_enqueue_style('tb-responsive', TB_CSS_DIR_URI . 'tb-responsive.css', false, TB_THEME_VERSION);
}
}
/**
* Returns all js needed for the front-end
*
* @since 1.6.0
*/
public function theme_js() {
// Front end only
if (is_admin()) {
return;
}
// Get js directory uri
$dir = TB_JS_DIR_URI;
// Get current theme version
$theme_version = TB_THEME_VERSION;
// Get localized array
$localize_array = $this->localize_array();
// Make sure the core jQuery script is loaded
// wp_enqueue_script('jquery');
wp_deregister_script('jquery');
wp_register_script( 'jquery', 'https://code.jquery.com/jquery-1.9.1.js');
wp_enqueue_script('jquery');
// Retina.js
if (tb_global_obj('retina')) {
wp_enqueue_script('retina', $dir . 'retina.js', array('jquery'), '0.0.2', true);
}
// Comment reply
if (is_singular() && comments_open() && get_option('thread_comments')) {
wp_enqueue_script('comment-reply');
}
// Load minified js
if (tb_get_mod('minify_js_enable', true)) {
wp_enqueue_script('wanderfuls-min', $dir . 'wanderfuls-min.js', array('jquery'), $theme_version, true);
wp_localize_script('wanderfuls-min', 'tbLocalize', $localize_array);
}
// Load all non-minified js
else {
// Superfish used for menu dropdowns
wp_enqueue_script('tb-superfish', $dir . 'lib/superfish.js', array('jquery'), $theme_version, true);
wp_enqueue_script('tb-supersubs', $dir . 'lib/supersubs.js', array('jquery'), $theme_version, true);
wp_enqueue_script('tb-hoverintent', $dir . 'lib/hoverintent.js', array('jquery'), $theme_version, true);
// Sticky header
wp_enqueue_script('tb-sticky', $dir . 'lib/sticky.js', array('jquery'), $theme_version, true);
// Page animations
wp_enqueue_script('tb-animsition', $dir . 'lib/animsition.js', array('jquery'), $theme_version, true);
// Tooltips
wp_enqueue_script('tb-tipsy', $dir . 'lib/tipsy.js', array('jquery'), $theme_version, true);
// Checks if images are loaded within an element
wp_enqueue_script('tb-images-loaded', $dir . 'lib/images-loaded.js', array('jquery'), $theme_version, true);
// Main masonry script
wp_enqueue_script('tb-isotope', $dir . 'lib/isotope.js', array('jquery'), $theme_version, true);
// Leaner modal used for search/woo modals: @todo: Replace with CSS+light js
wp_enqueue_script('tb-leanner-modal', $dir . 'lib/leanner-modal.js', array('jquery'), $theme_version, true);
// Slider Pro
wp_enqueue_script('tb-sliderpro', $dir . 'lib/jquery.sliderPro.js', array('jquery'), $theme_version, true);
wp_enqueue_script('tb-sliderpro-customthumbnails', $dir . 'lib/jquery.sliderProCustomThumbnails.js', array('jquery'), false, true);
// Touch Swipe - do we need it?
wp_enqueue_script('tb-touch-swipe', $dir . 'lib/touch-swipe.js', array('jquery'), $theme_version, true);
// Carousels
wp_enqueue_script('tb-owl-carousel', $dir . 'lib/owl.carousel.js', array('jquery'), $theme_version, true);
// Used for milestones
wp_enqueue_script('tb-count-to', $dir . 'lib/count-to.js', array('jquery'), $theme_version, true);
wp_enqueue_script('tb-appear', $dir . 'lib/appear.js', array('jquery'), $theme_version, true);
// Mobile menu
wp_enqueue_script('tb-sidr', $dir . 'lib/sidr.js', array('jquery'), $theme_version, true);
// Custom Selects
wp_enqueue_script('tb-custom-select', $dir . 'lib/jquery.customSelect.js', array('jquery'), $theme_version, true);
// Equal Heights
wp_enqueue_script('tb-match-height', $dir . 'lib/jquery.matchHeight.js', array('jquery'), $theme_version, true);
// Mousewheel
/* wp_enqueue_script( 'tb-mousewheel', $dir .'lib/jquery.mousewheel.js', array( 'jquery' ), $theme_version, true ); */
// Parallax bgs
wp_enqueue_script('tb-scrolly', $dir . 'lib/scrolly.js', array('jquery'), $theme_version, true);
// iLightbox
wp_enqueue_script('tb-ilightbox', $dir . 'lib/ilightbox.js', array('jquery'), $theme_version, true);
// Cycle2
wp_enqueue_script('tb-cycle2', $dir . 'lib/jquery.cycle2.js', array('jquery'), $theme_version, true);
// WooCommerce quanity buttons
if (TB_WOOCOMMERCE_ACTIVE) {
wp_enqueue_script('wc-quantity-increment', $dir . 'lib/wc-quantity-increment.js', array('jquery'), $theme_version, true);
}
// Core global functions
wp_enqueue_script('tb-functions', $dir . 'functions.js', array('jquery'), $theme_version, true);
// Core global functions
wp_enqueue_script('tb-customjs', $dir . 'custom.js', array('jquery'), $theme_version, true);
// Localize script
wp_localize_script('tb-functions', 'tbLocalize', $localize_array);
}
}
/**
* Functions.js localize array
* IMPORTANT: Must be static so we can get array in VC inline_js class
*
* @since 3.0.0
*/
public static function localize_array() {
// Get theme options
$header_style = tb_global_obj('header_style');
$sticky_header = tb_global_obj('has_fixed_header');
$sticky_header = tb_global_obj('has_fixed_header');
$mobile_menu_style = tb_global_obj('mobile_menu_style');
// Create array
$array = array(
'isRTL' => is_rtl(),
'mainLayout' => tb_global_obj('main_layout'),
'mobileMenuStyle' => tb_global_obj('mobile_menu_style'),
'menuSearchStyle' => tb_global_obj('menu_search_style'),
'hasStickyHeader' => $sticky_header,
'siteHeaderStyle' => $header_style,
'superfishDelay' => 600,
'superfishSpeed' => 'fast',
'superfishSpeedOut' => 'fast',
'localScrollUpdateHash' => false,
'localScrollSpeed' => 800,
'windowScrollTopSpeed' => 800,
'carouselSpeed' => 150,
'customSelects' => '.woocommerce-ordering .orderby, #dropdown_product_cat, .widget_categories select, .widget_archive select, #bbp_stick_topic_select, #bbp_topic_status_select, #bbp_destination_topic, .single-product .variations_form .variations select',
);
// WooCart
if (TB_WOOCOMMERCE_ACTIVE) {
$array['wooCartStyle'] = tb_global_obj('menu_cart_style');
}
// Sidr settings
if ('sidr' == $mobile_menu_style) {
$array['sidrSource'] = tb_global_obj('sidr_menu_source');
$array['sidrDisplace'] = tb_get_mod('mobile_menu_sidr_displace', true) ? true : false;
$array['sidrSide'] = tb_get_mod('mobile_menu_sidr_direction', 'left');
$array['sidrSpeed'] = 300;
}
// Toggle mobile menu
if ('toggle' == $mobile_menu_style) {
$array['animateMobileToggle'] = true;
}
// Sticky Header
if ($sticky_header) {
$array['stickyShrinkOffset'] = 0;
if (tb_global_obj('fixed_header_logo')) {
$array['stickyheaderCustomLogo'] = tb_global_obj('fixed_header_logo');
}
$array['hasStickyMobileHeader'] = tb_get_mod('fixed_header_mobile');
$array['overlayHeaderStickyTop'] = 0;
$array['stickyHeaderBreakPoint'] = 960;
$array['shrinkHeaderLogoHeight'] = tb_get_mod('fixed_header_shrink_logo_height', 50);
}
// Sticky topBar
if (tb_get_mod('top_bar_sticky')) {
$array['stickyTopBarBreakPoint'] = 960;
$array['hasStickyTopBarMobile'] = true;
}
// Header five
if ('five' == $header_style) {
$array['headerFiveSplitOffset'] = 1;
}
// Full screen mobile menu style
if ('full_screen' == $mobile_menu_style) {
$array['fullScreenMobileMenuStyle'] = tb_get_mod('full_screen_mobile_menu_style', 'white');
}
// Apply filters and return array
return apply_filters('tb_localize_array', $array);
}
/**
* Add headers for IE to override IE's Compatibility View Settings
*
* @since 2.1.0
*/
public static function x_ua_compatible_headers($headers) {
$headers['X-UA-Compatible'] = 'IE=edge';
return $headers;
}
/**
* Adds CSS for ie8
* Applies the tb_ie_8_url filter so you can alter your IE8 stylesheet URL
*
* @since 1.6.0
*/
public static function browser_dependent_css() {
$ie_8 = apply_filters('tb_ie8_stylesheet', TB_CSS_DIR_URI . 'ie8.css');
echo '<!--[if IE 8]><link rel="stylesheet" type="text/css" href="' . $ie_8 . '" media="screen"><![endif]-->';
$ie_9 = apply_filters('tb_ie9_stylesheet', TB_CSS_DIR_URI . 'ie9.css');
echo '<!--[if IE 9]><link rel="stylesheet" type="text/css" href="' . $ie_9 . '" media="screen"><![endif]-->';
}
/**
* Load HTML5 dependencies for IE8
*
* @since 1.6.0
*/
public static function html5_shiv() {
echo '<!--[if lt IE 9]><script src="' . TB_JS_DIR_URI . 'html5.js"></script><![endif]-->';
}
/**
* Registers the theme sidebars (widget areas)
*
* @since 1.6.0
*/
public function register_sidebars() {
// Heading element type
$sidebar_headings = tb_get_mod('sidebar_headings', 'div');
$sidebar_headings = $sidebar_headings ? $sidebar_headings : 'div';
$footer_headings = tb_get_mod('footer_headings', 'div');
$footer_headings = $footer_headings ? $footer_headings : 'div';
// Main Sidebar
register_sidebar(array(
'name' => __('Main Sidebar', 'tb'),
'id' => 'sidebar',
'description' => __('Widgets in this area are used in the default sidebar. This sidebar will be used for your standard blog posts.', 'tb'),
'before_widget' => '<div class="sidebar-box %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $sidebar_headings . ' class="widget-title">',
'after_title' => '</' . $sidebar_headings . '>',
));
// Pages Sidebar
if (tb_get_mod('pages_custom_sidebar', true)) {
register_sidebar(array(
'name' => __('Pages Sidebar', 'tb'),
'id' => 'pages_sidebar',
'before_widget' => '<div class="sidebar-box %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $sidebar_headings . ' class="widget-title">',
'after_title' => '</' . $sidebar_headings . '>',
));
}
// Search Results Sidebar
if (tb_get_mod('search_custom_sidebar', true)) {
register_sidebar(array(
'name' => __('Search Results Sidebar', 'tb'),
'id' => 'search_sidebar',
'before_widget' => '<div class="sidebar-box %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $sidebar_headings . ' class="widget-title">',
'after_title' => '</' . $sidebar_headings . '>',
));
}
// Testimonials Sidebar
if (post_type_exists('testimonials') && tb_get_mod('testimonials_custom_sidebar', true)) {
$obj = get_post_type_object('testimonials');
$post_type_name = $obj->labels->name;
register_sidebar(array(
'name' => $post_type_name . ' ' . __('Sidebar', 'tb'),
'id' => 'testimonials_sidebar',
'before_widget' => '<div class="sidebar-box %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $sidebar_headings . ' class="widget-title">',
'after_title' => '</' . $sidebar_headings . '>',
));
}
// Side Menu Widgit
register_sidebar(array(
'name' => __('Side Menu Widgit Area', 'tb'),
'id' => 'side_menu',
'before_widget' => '<div class="side_menu %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $sidebar_headings . ' class="widget-title">',
'after_title' => '</' . $sidebar_headings . '>',
));
register_sidebar(array(
'name' => __('Custom Footer Coloumn 1', ''),
'id' => 'cs-footer-1',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
register_sidebar(array(
'name' => __('Custom Footer Coloumn 2', ''),
'id' => 'cs-footer-2',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
register_sidebar(array(
'name' => __('Custom Footer Coloumn 3', ''),
'id' => 'cs-footer-3',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
register_sidebar(array(
'name' => __('Custom Footer Coloumn 4', ''),
'id' => 'cs-footer-4',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
register_sidebar(array(
'name' => __('Custom Footer Coloumn 5', ''),
'id' => 'cs-footer-5',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
register_sidebar(array(
'name' => __('Custom Mobile Coloumn left', ''),
'id' => 'cs-m-footer-1',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
register_sidebar(array(
'name' => __('Custom Mobile Coloumn Right', ''),
'id' => 'cs-m-footer-2',
'description' => __('Add footer coloumn', ''),
'before_widget' => '<div id="%1$s" class="widget %2$s">',
'after_widget' => '</div>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
));
// Footer Sidebars
if (tb_get_mod('footer_widgets', true)) {
// Footer widget columns
$footer_columns = tb_get_mod('footer_widgets_columns', '4');
// Footer 1
register_sidebar(array(
'name' => __('Footer Column 1', 'tb'),
'id' => 'footer_one',
'before_widget' => '<div class="footer-widget %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $footer_headings . ' class="widget-title">',
'after_title' => '</' . $footer_headings . '>',
));
// Footer 2
if ($footer_columns > '1') {
register_sidebar(array(
'name' => __('Footer Column 2', 'tb'),
'id' => 'footer_two',
'before_widget' => '<div class="footer-widget %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $footer_headings . ' class="widget-title">',
'after_title' => '</' . $footer_headings . '>'
));
}
// Footer 3
if ($footer_columns > '2') {
register_sidebar(array(
'name' => __('Footer Column 3', 'tb'),
'id' => 'footer_three',
'before_widget' => '<div class="footer-widget %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $footer_headings . ' class="widget-title">',
'after_title' => '</' . $footer_headings . '>',
));
}
// Footer 4
if ($footer_columns > '3') {
register_sidebar(array(
'name' => __('Footer Column 4', 'tb'),
'id' => 'footer_four',
'before_widget' => '<div class="footer-widget %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $footer_headings . ' class="widget-title">',
'after_title' => '</' . $footer_headings . '>',
));
}
// Footer 5
if ($footer_columns > '4') {
register_sidebar(array(
'name' => __('Footer Column 5', 'tb'),
'id' => 'footer_five',
'before_widget' => '<div class="footer-widget %2$s clr">',
'after_widget' => '</div>',
'before_title' => '<' . $footer_headings . ' class="widget-title">',
'after_title' => '</' . $footer_headings . '>',
));
}
}
}
/**
* Add the gallery metabox to more post types
*
* @since 2.0.0
*/
public static function add_gallery_metabox($types) {
$types[] = 'page';
return $types;
}
/**
* Defines the directory URI for the gallery metabox class.
*
* @since 1.6.3
*/
public static function gallery_metabox_dir_uri() {
return TB_FRAMEWORK_DIR_URI . 'classes/gallery-metabox/';
}
/**
* All theme functions hook into the tb_head_css filter for this function.
* This way all dynamic CSS is minified and outputted in one location in the site header.
*
* @since 1.6.0
*/
public static function custom_css($output = NULL) {
// Add filter for adding custom css via other functions
$output = apply_filters('tb_head_css', $output);
// Minify and output CSS in the wp_head
if (!empty($output)) {
$output = tb_minify_css($output);
$output = "<!-- TOTAL CSS -->\n<style type=\"text/css\">\n" . $output . "\n</style>";
echo $output;
}
}
/**
* Adds inline CSS for the admin
*
* @since 1.6.0
*/
public static function admin_inline_css() {
echo '<style>div#setting-error-tgmpa{display:block;}</style>';
}
/**
* Alters the default WordPress tag cloud widget arguments.
* Makes sure all font sizes for the cloud widget are set to 1em.
*
* @since 1.6.0
*/
public static function widget_tag_cloud_args($args) {
$args['largest'] = '0.923em';
$args['smallest'] = '0.923em';
$args['unit'] = 'em';
return $args;
}
/**
* Alter wp list categories arguments.
* Adds a span around the counter for easier styling.
*
* @since 1.6.0
*/
public static function wp_list_categories_args($links) {
$links = str_replace('</a> (', '</a> <span class="cat-count-span">(', $links);
$links = str_replace(' )', ' )</span>', $links);
return $links;
}
/**
* This function runs before the main query.
*
* @since 1.6.0
*/
public function pre_get_posts($query) {
// Lets not break stuff
if (is_admin() || !$query->is_main_query()) {
return;
}
// Search pagination
if (is_search()) {
$query->set('posts_per_page', tb_get_mod('search_posts_per_page', '10'));
return;
}
// Exclude categories from the main blog
if (( is_home() || is_page_template('templates/blog.php') ) && $cats = tb_blog_exclude_categories()) {
set_query_var('category__not_in', $cats);
return;
}
// Category pagination
$terms = get_terms('category');
if (!empty($terms)) {
foreach ($terms as $term) {
if (is_category($term->slug)) {
$term_id = $term->term_id;
$term_data = get_option("category_$term_id");
if ($term_data) {
if (!empty($term_data['tb_term_posts_per_page'])) {
$query->set('posts_per_page', $term_data['tb_term_posts_per_page']);
return;
}
}
}
}
}
}
/**
* Add new user fields / user meta
*
* @since 1.6.0
*/
public static function add_user_social_fields($contactmethods) {
$branding = TB_THEME_BRANDING;
if (!isset($contactmethods['tb_twitter'])) {
$contactmethods['tb_twitter'] = $branding . ' - Twitter';
}
if (!isset($contactmethods['tb_facebook'])) {
$contactmethods['tb_facebook'] = $branding . ' - Facebook';
}
if (!isset($contactmethods['tb_googleplus'])) {
$contactmethods['tb_googleplus'] = $branding . ' - Google+';
}
if (!isset($contactmethods['tb_linkedin'])) {
$contactmethods['tb_linkedin'] = $branding . ' - LinkedIn';
}
if (!isset($contactmethods['tb_pinterest'])) {
$contactmethods['tb_pinterest'] = $branding . ' - Pinterest';
}
if (!isset($contactmethods['tb_instagram'])) {
$contactmethods['tb_instagram'] = $branding . ' - Instagram';
}
return $contactmethods;
}
/**
* Alters the default oembed output.
* Adds special classes for responsive oembeds via CSS.
*
* @since 1.6.0
*/
public static function add_responsive_wrap_to_oembeds($html, $url, $attr, $post_id) {
$html = '<div class="responsive-video-wrap entry-video">' . $html . '</div>';
return $html;
}
/**
* The wp_get_attachment_url() function doesn't distinguish whether a page request arrives via HTTP or HTTPS.
* Using wp_get_attachment_url filter, we can fix this to avoid the dreaded mixed content browser warning
*
* @since 1.6.0
*/
public static function honor_ssl_for_attachments($url) {
$http = site_url(FALSE, 'http');
$https = site_url(FALSE, 'https');
$isSecure = false;
if (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) {
$isSecure = true;
}
if ($isSecure) {
return str_replace($http, $https, $url);
} else {
return $url;
}
}
/**
* Alters the default WordPress password protected form so it's easier to style
*
* @since 2.0.0
*/
public static function custom_password_protected_form() {
ob_start();
include( locate_template('partials/password-protection-form.php') );
return ob_get_clean();
}
/**
* Modify JOIN in the next/prev function
*
* @since 2.0.0
*/
public static function prev_next_join($join) {
global $wpdb;
$join .= " LEFT JOIN $wpdb->postmeta AS m ON ( p.ID = m.post_id AND m.meta_key = 'tb_post_link' )";
return $join;
}
/**
* Modify WHERE in the next/prev function
*
* @since 2.0.0
*/
public static function prev_next_where($where) {
global $wpdb;
$where .= " AND ( (m.meta_key = 'tb_post_link' AND CAST(m.meta_value AS CHAR) = '' ) OR m.meta_id IS NULL ) ";
return $where;
}
/**
* Redirect posts using custom links
*
* @since 2.0.0
*/
public static function redirect_custom_links() {
if (is_singular() && $custom_link = tb_get_custom_permalink()) {
wp_redirect($custom_link, 301);
}
}
/**
* When a term is deleted, delete its data.
*
* @since 2.1.0
*/
public static function delete_term($term_id) {
// If term id is defined
if ($term_id = absint($term_id)) {
// Get terms data
$term_data = get_option('tb_term_data');
// Remove key with term data
if ($term_data && isset($term_data[$term_id])) {
unset($term_data[$term_id]);
update_option('tb_term_data', $term_data);
}
}
}
/**
* Adds extra classes to the post_class() output
*
* @since 3.0.0
*/
public static function post_class($classes) {
// Get post
global $post;
// Add entry class
$classes[] = 'entry';
// Add has media class
if (has_post_thumbnail() || get_post_meta($post->ID, 'tb_post_oembed', true) || get_post_meta($post->ID, 'tb_post_self_hosted_media', true) || get_post_meta($post->ID, 'tb_post_video_embed', true) || get_post_meta($post->ID, 'tb_post_oembed', true)
) {
$classes[] = 'format-video';
$classes[] = 'has-media';
}
// Return classes
return $classes;
}
/**
* Add schema markup to the authors post link
*
* @since 3.0.0
*/
public static function the_author_posts_link($link) {
// Add schema markup
$schema = tb_get_schema_markup('author_link');
if ($schema) {
$link = str_replace('rel="author"', 'rel="author"' . $schema, $link);
}
// Return link
return $link;
}
}
$tb_theme_setup = new TB_Theme_Setup;
function theme_name_scripts() {
wp_enqueue_style('bootstrap', get_template_directory_uri() . '/bootstrap/css/bootstrap.min.css');
wp_enqueue_style('style', get_template_directory_uri() . '/bootstrap/style.css');
wp_enqueue_script('bootstrap', get_template_directory_uri() . '/bootstrap/js/bootstrap.min.js');
wp_enqueue_script('flash', get_template_directory_uri() . '/js/flash_detect_min.js');
wp_enqueue_script('dt', get_template_directory_uri() . '/js/dt50.js');
wp_enqueue_style('custom', get_template_directory_uri() . '/css/custom.css');
wp_enqueue_style('font-awesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
}
add_action('wp_enqueue_scripts', 'theme_name_scripts');
include('optionpage/admin_menu.php');
add_action('woocommerce_product_thumbnails', 'display_product_video', 1);
function display_product_video() {
echo '<span class="selected_candy"></span>';
echo '<div class="video-on-fullwidth">';
the_field('video');
echo '</div>';
}
add_action('woocommerce_single_product_summary', 'woocommerce_template_top_category_desc', 31);
function woocommerce_template_top_category_desc() {
echo '<div class="video-on-mobile">';
the_field('video');
echo '</div>';
}
/*
* Call On Phone Customization
*/
/*
* Add Custom Fields to Product
*/
function action_woocommerce_before_add_to_cart_button() {
if (is_user_logged_in()) {
$user_meta = get_field('call_on_phone_executive', 'user_' . get_current_user_id());
if ((!empty($user_meta)) && ($user_meta == 'Yes')) {
?>
<div style="margin-bottom: 25px;">
<label>Color of Pom Poms</label>
<input name="color_of_pompoms" maxlength="50" class="input-text text" type="text" />
</div>
<div style="margin-bottom: 25px;">
<label>Color of Tassels</label>
<input name="color_of_tassel" maxlength="50" class="input-text text" type="text" />
</div>
<div style="margin-bottom: 25px;">
<label>Color of Ribbons(around candy tube)</label>
<input name="color_of_ribbons" class="input-text text" type="text" />
</div>
<div style="margin-bottom: 25px;">
<label>Color of Bases</label>
<input name="color_of_bases" class="input-text text" type="text" />
</div>
<?php
}
}
?>
<?php
}
add_action('woocommerce_before_add_to_cart_button', 'action_woocommerce_before_add_to_cart_button', 10, 0);
/*
* Add to Cart Meta fields
*/
function iconic_add_engraving_text_to_cart_item($cart_item_data, $product_id, $variation_id) {
$color_of_bases = filter_input(INPUT_POST, 'color_of_bases');
if (!empty($color_of_bases)) {
$cart_item_data['color_of_bases'] = $color_of_bases;
}
$color_of_tassel = filter_input(INPUT_POST, 'color_of_tassel');
if (!empty($color_of_tassel)) {
$cart_item_data['color_of_tassel'] = $color_of_tassel;
}
$color_of_ribbons = filter_input(INPUT_POST, 'color_of_ribbons');
if (!empty($color_of_ribbons)) {
$cart_item_data['color_of_ribbons'] = $color_of_ribbons;
}
$color_of_pompoms = filter_input(INPUT_POST, 'color_of_pompoms');
if (!empty($color_of_bases)) {
$cart_item_data['color_of_pompoms'] = $color_of_pompoms;
}
return $cart_item_data;
}
add_filter('woocommerce_add_cart_item_data', 'iconic_add_engraving_text_to_cart_item', 10, 3);
function iconic_display_engraving_text_cart($item_data, $cart_item) {
if (!empty($cart_item['color_of_bases'])) {
$item_data[] = array(
'key' => __('Color Of Bases', 'iconic'),
'value' => wc_clean($cart_item['color_of_bases']),
'display' => '',
);
}
if (!empty($cart_item['color_of_tassel'])) {
$item_data[] = array(
'key' => __('Color Of Tassels', 'iconic'),
'value' => wc_clean($cart_item['color_of_tassel']),
'display' => '',
);
}
if (!empty($cart_item['color_of_ribbons'])) {
$item_data[] = array(
'key' => __('Color Of Ribbons', 'iconic'),
'value' => wc_clean($cart_item['color_of_ribbons']),
'display' => '',
);
}
if (!empty($cart_item['color_of_pompoms'])) {
$item_data[] = array(
'key' => __('Color Of Pompoms', 'iconic'),
'value' => wc_clean($cart_item['color_of_pompoms']),
'display' => '',
);
}
return $item_data;
}
add_filter('woocommerce_get_item_data', 'iconic_display_engraving_text_cart', 10, 2);
add_action('woocommerce_add_order_item_meta', 'add_product_custom_field_to_order_item_meta', 9, 3);
function add_product_custom_field_to_order_item_meta($item_id, $item_values, $item_key) {
if (!empty($item_values['color_of_bases'])) {
wc_update_order_item_meta($item_id, 'Color of Bases', sanitize_text_field($item_values['color_of_bases']));
}
if (!empty($item_values['color_of_tassel'])) {
wc_update_order_item_meta($item_id, 'Color of Tassel', sanitize_text_field($item_values['color_of_tassel']));
}
if (!empty($item_values['color_of_ribbons'])) {
wc_update_order_item_meta($item_id, 'Color of Ribbons', sanitize_text_field($item_values['color_of_ribbons']));
}
if (!empty($item_values['color_of_pompoms'])) {
wc_update_order_item_meta($item_id, 'Color of Pompoms', sanitize_text_field($item_values['color_of_pompoms']));
}
}
/*
* Add Cart Subtotal Fields
*/
add_action('woocommerce_after_checkout_billing_form', 'add_box_option_to_checkout');
function add_box_option_to_checkout($checkout) {
if (is_user_logged_in()) {
$user_meta = get_field('call_on_phone_executive', 'user_' . get_current_user_id());
if ((!empty($user_meta)) && ($user_meta == 'Yes')) {
echo '<div id="message_fields">';
woocommerce_form_field('add_surcharge', array(
'type' => 'text',
'class' => array('add_surcharge_box form-row-wide'),
'label' => __('Surcharge'),
'placeholder' => __(''),
), $checkout->get_value('add_surcharge'));
woocommerce_form_field('add_surcharge_title', array(
'type' => 'text',
'class' => array('add_surcharge_box form-row-wide'),
'label' => __('Surcharge Title'),
'placeholder' => __(''),
), $checkout->get_value('add_surcharge_title'));
woocommerce_form_field('add_discount', array(
'type' => 'text',
'class' => array('add_discount_box form-row-wide'),
'label' => __('Discount'),
'placeholder' => __(''),
), $checkout->get_value('add_discount'));
woocommerce_form_field('add_discount_title', array(
'type' => 'text',
'class' => array('add_discount_box form-row-wide'),
'label' => __('Discount Title'),
'placeholder' => __(''),
), $checkout->get_value('add_discount_title'));
echo '<a class="button alt update_surcharge" href="#">Update Total</a>';
echo '</div>';
}
}
}
add_action('wp_footer', 'woocommerce_add_gift_box');
function woocommerce_add_gift_box() {
if (is_checkout()) {
?>
<script type="text/javascript">
jQuery(document).ready(function ($) {
$('.update_surcharge').click(function () {
jQuery('body').trigger('update_checkout');
return false;
});
});
</script>
<?php
}
}
add_action('woocommerce_cart_calculate_fees', 'woo_add_cart_fee');
function woo_add_cart_fee($cart) {
if (is_user_logged_in()) {
$user_meta = get_field('call_on_phone_executive', 'user_' . get_current_user_id());
if ((!empty($user_meta)) && ($user_meta == 'Yes')) {
if (!$_POST || ( is_admin() && !is_ajax() )) {
return;
}
if (isset($_POST['post_data'])) {
parse_str($_POST['post_data'], $post_data);
} else {
$post_data = $_POST; // fallback for final checkout (non-ajax)
}
if (isset($post_data['add_surcharge_title'])) {
if (isset($post_data['add_surcharge'])) {
WC()->cart->add_fee($post_data['add_surcharge_title'], $post_data['add_surcharge']);
} else {
WC()->cart->add_fee($post_data['add_surcharge_title'], 0);
}
}
if (isset($post_data['add_discount_title'])) {
if (isset($post_data['add_discount'])) {
WC()->cart->add_fee($post_data['add_discount_title'], -1 * $post_data['add_discount']);
} else {
WC()->cart->add_fee($post_data['add_discount_title'], 0);
}
}
}
}
}
/*
* Add Custom checkout fields
*/
add_action('woocommerce_after_order_notes', 'customise_checkout_field');
function customise_checkout_field($checkout) {
if (is_user_logged_in()) {
$user_meta = get_field('call_on_phone_executive', 'user_' . get_current_user_id());
if ((!empty($user_meta)) && ($user_meta == 'Yes')) {
echo '<div id="customise_checkout_field"><h2>' . __('Party Details') . '</h2>';
wp_enqueue_script('jquery-ui-datepicker');
echo '
<script>
jQuery(function($){
$("#datepicker").datepicker();
});
</script>';
woocommerce_form_field('party_type', array(
'type' => 'text',
'class' => array(
'party_type form-row-wide'
),
'label' => __('Party Type'),
'placeholder' => __('Party Type'),
'required' => true,
), $checkout->get_value('party_type'));
woocommerce_form_field('party_date', array(
'type' => 'text',
'class' => array(
'party_date form-row-wide'
),
'id' => 'datepicker',
'label' => __('Party Date'),
'placeholder' => __('Party Date'),
'required' => true,
), $checkout->get_value('party_date'));
echo '</div>';
}
}
}
add_action('woocommerce_checkout_update_order_meta', 'customise_checkout_field_update_order_meta');
function customise_checkout_field_update_order_meta($order_id) {
$billing_email = get_post_meta($order_id, '_billing_email', TRUE);
/* Search User By Email */
if (!empty($billing_email)) {
if (email_exists($billing_email)) {
$user = get_user_by('email', $billing_email);
update_post_meta($order_id, '_customer_user', $user->ID);
$quoter = get_field('quoter', 'user_' . $user->ID);
if (!empty($quoter)) {
update_post_meta($order_id, 'quoter', $quoter);
}
}
}
if (!empty($_POST['party_type'])) {
update_post_meta($order_id, 'Party Type', sanitize_text_field($_POST['party_type']));
}
if (!empty($_POST['party_date'])) {
update_post_meta($order_id, 'Party Date', sanitize_text_field($_POST['party_date']));
}
}