/** * General Functions * */ defined( 'ABSPATH' ) || exit; // Exit if accessed directly /** * Get the components of theme mobile header */ if( ! function_exists( 'tie_mobile_header_components' ) ) { function tie_mobile_header_components( $area ){ $mobile_header_components = array( 'menu' => tie_mobile_menu_icon(), 'search' => ' '. esc_html__( 'Search for', TIELABS_TEXTDOMAIN ) .' ', 'skin' => ' '. esc_html__( 'Switch skin', TIELABS_TEXTDOMAIN ) .' ', ); // Login and user account if( is_user_logged_in() ){ ob_start(); tie_login_form(); $login_form = ob_get_clean(); $current_user = wp_get_current_user(); $mobile_header_components['login'] = ' '. get_avatar( $current_user->ID, apply_filters( 'TieLabs/Login/avatar_size', 30 ) ) .' '. esc_html__( 'Your Profile', TIELABS_TEXTDOMAIN ) .'
'. $login_form .'
'; } else { $mobile_header_components['login'] = ' '. esc_html__( 'Log In', TIELABS_TEXTDOMAIN ) .' '; } // WooCommerce Cart if ( TIELABS_WOOCOMMERCE_IS_ACTIVE ){ $mobile_header_components['cart'] = tie_component_button_cart(); } // BuddyPress if ( TIELABS_BUDDYPRESS_IS_ACTIVE ){ $mobile_header_components['bp_notifications'] = tie_component_button_bp_notifications(); } // Check the active components $components = array(); foreach ( $mobile_header_components as $key => $html ) { if( tie_get_option( 'mobile_header_components_'.$key ) == $area ){ $components[ $key ] = ''; } } // $components = apply_filters( 'TieLabs/Mobile/Header/Components', $components, $area ); if( ! empty( $components ) ){ echo '
'; echo ''; echo '
'; } // If Header layout is centered we need to place the div even if it is empty || FLEX elseif ( tie_get_option( 'mobile_header' ) == 'centered' ) { echo '
'; } return false; } } /** * Mobile Menu icon */ if( ! function_exists( 'tie_mobile_menu_icon' ) ) { function tie_mobile_menu_icon(){ if( ! tie_get_option( 'mobile_header_components_menu' ) ){ return false; } $menu_icon = tie_get_option( 'mobile_menu_icon', 1 ); $class = 'tie-mobile-menu-icon '; if( is_numeric( $menu_icon ) ){ $class .= "nav-icon is-layout-$menu_icon"; } else{ $class .= "tie-icon-$menu_icon"; } $class_wrapper = tie_get_option( 'mobile_menu_text' ) ? 'menu-text-wrapper' : ''; $mobile_icon = ''; $mobile_icon .= ''; if( tie_get_option( 'mobile_menu_text' ) ){ $mobile_icon .= ''. esc_html__( 'Menu', TIELABS_TEXTDOMAIN ) .''; } else{ $mobile_icon .= ''. esc_html__( 'Menu', TIELABS_TEXTDOMAIN ) .''; } $mobile_icon .= ''; return $mobile_icon; } } /** * Mobile Header Components Main area */ if( ! function_exists( 'tie_mobile_header_components_area_1' ) ) { add_action( 'TieLabs/Logo/before', 'tie_mobile_header_components_area_1' ); function tie_mobile_header_components_area_1(){ tie_mobile_header_components( 'area_1' ); } } /** * Mobile Header Components */ if( ! function_exists( 'tie_mobile_header_components_area_2' ) ) { add_action( 'TieLabs/Logo/after', 'tie_mobile_header_components_area_2' ); function tie_mobile_header_components_area_2(){ tie_mobile_header_components( 'area_2' ); } }/** * Filters * */ defined( 'ABSPATH' ) || exit; // Exit if accessed directly class TIELABS_FILTERS { /** * Runs on class initialization. Adds filters and actions. */ function __construct() { // Add Support for Shortcodes in the terms descriptions add_filter( 'term_description', 'do_shortcode' ); add_action( 'init', array( $this, 'init_hook' ) ); add_action( 'init', array( $this, 'redirect_random_post' ) ); add_action( 'wp_head', array( $this, 'meta_description' ) ); add_action( 'wp_head', array( $this, 'meta_generator' ) ); add_action( 'wp_head', array( $this, 'x_ua_compatible' ) ); add_action( 'wp_footer', array( $this, 'footer_inline_scripts' ), 999 ); add_action( 'wp_footer', array( $this, 'footer_misc' ) ); add_action( 'wp_footer', array( $this, 'popup_module' ) ); add_action( 'comment_class', array( $this, 'is_avatar_enabled' ) ); add_filter( 'pre_get_posts', array( $this, 'search_filters' ) ); add_filter( 'pre_get_posts', array( $this, 'category_posts_order' ) ); add_filter( 'TieLabs/cache_key', array( $this, 'cache_key' ) ); add_filter( 'widget_tag_cloud_args', array( $this, 'tag_widget_limit' ) ); add_filter( 'widget_title', array( $this, 'tagcloud_widget_title' ), 10, 3 ); add_filter( 'login_headerurl', array( $this, 'dashboard_login_logo_url' ) ); add_filter( 'login_head', array( $this, 'dashboard_login_logo' ) ); add_filter( 'get_the_archive_title', array( $this, 'archive_title' ), 15 ); add_filter( 'wp_link_pages_args', array( $this, 'pages_next_and_number' ) ); add_filter( 'excerpt_more', array( $this, 'excerpt_more' ) ); add_filter( 'get_the_excerpt', array( $this, 'post_excerpt' ), 9 ); add_filter( 'has_post_thumbnail', array( $this, 'has_post_thumbnail' ) ); add_filter( 'post_thumbnail_html', array( $this, 'default_featured_image' ), 10, 5 ); add_filter( 'TieLabs/exclude_content', 'TIELABS_HELPER::strip_shortcodes' ); add_filter( 'wp_get_attachment_image_src', array( $this, 'gif_image' ), 10, 4 ); add_filter( 'wp_get_attachment_image_attributes', array( $this, 'small_thumb_image_class' ), 10, 3 ); add_filter( 'TieLabs/Primary_Category/custom', array( $this, 'yoast_seo_primary_category' ) ); // Translations if( tie_get_option( 'translations' ) ){ add_filter( 'gettext', array( $this, 'theme_translation' ), 10, 3 ); } if( tie_get_option( 'translation_numbers' ) ){ add_filter( 'get_the_date', array( $this, 'translate_numbers' ), 55 ); add_filter( 'get_comment_date', array( $this, 'translate_numbers' ), 55 ); add_filter( 'get_comment_time', array( $this, 'translate_numbers' ), 55 ); add_filter( 'comments_number', array( $this, 'translate_numbers' ), 55 ); add_filter( 'wp_list_categories', array( $this, 'translate_numbers' ), 55 ); add_filter( 'TieLabs/number_format', array( $this, 'translate_numbers' ), 55 ); add_filter( 'TieLabs/post_date', array( $this, 'translate_numbers' ), 55 ); add_filter( 'TieLabs/reading_time', array( $this, 'translate_numbers' ), 55 ); add_filter( 'TieLabs/post_views_number', array( $this, 'translate_numbers' ), 55 ); add_filter( 'TieLabs/Social_Counters/number', array( $this, 'translate_numbers' ), 55 ); add_filter( 'TieLabs/Weather/number', array( $this, 'translate_numbers' ), 55 ); } } /** * init_hook */ function init_hook(){ /*if( current_user_can( 'manage_options' ) ){ add_filter( 'the_content', array( $this, 'shortcodes_notice' ) ); } */ //WordPress doesn't recognize it as RTL language because there is an error in the main translation file of the Sindhi language! if( get_locale() == 'snd' && ! is_rtl() ){ global $wp_locale; $wp_locale->text_direction = 'rtl'; } } /** * Add notice for the shortcodes plugin */ function shortcodes_notice( $content ){ // Don't show the message if this is excerpt OR backend OR AMP if( is_admin() || ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) || in_array( 'parse_request', $GLOBALS['wp_current_filter'] ) || in_array( 'get_the_excerpt', $GLOBALS['wp_current_filter'] ) ){ return $content; } $message = ''; // Timetable and Event Schedule Plugin if( ! TIELABS_MPTIMETABLE_IS_ACTIVE ){ if( strpos( $content, '[mp-timetable' ) !== false ){ $message .= TIELABS_HELPER::notice_message( sprintf( esc_html__( 'This section contains some shortcodes that requries the %2$s%1$s%3$s Plugin.', TIELABS_TEXTDOMAIN ), 'Timetable and Event Schedule', '', '' ), false ); } } // Contact Form 7 Plugin if( ! class_exists( 'WPCF7' ) ){ if( strpos( $content, '[contact-form-7' ) !== false ){ $message .= TIELABS_HELPER::notice_message( sprintf( esc_html__( 'This section contains some shortcodes that requries the %2$s%1$s%3$s Plugin.', TIELABS_TEXTDOMAIN ), 'Contact Form 7', '', '' ), false) ; } } // Return the content with message return apply_filters( 'TieLabs/shortcodes_check', $message, $content ) . $content; } /** * x_ua_compatible */ function x_ua_compatible(){ echo ''; } /** * meta_escription */ function meta_description(){ // Return if the description option is disabled or the Yoast SEO or Rank Math SEO plugins are active if( ! tie_get_option( 'post_meta_escription' ) || class_exists( 'WPSEO_Frontend' ) || class_exists( 'RankMath' ) ){ return; } // Single Page doesn't have a builder if( is_singular() && ! TIELABS_HELPER::has_builder() ){ $post = get_post(); if( ! empty( $post->post_content ) ){ $description = apply_filters( 'TieLabs/exclude_content', $post->post_content ); } } // Archives elseif( get_the_archive_description() ){ $description = get_the_archive_description(); } // Default if( empty( $description ) ){ $description = get_bloginfo( 'description' ); } if( ! empty( $description ) ){ $description = strip_tags( strip_shortcodes( $description ) ); echo ' '; } } /** * Theme translations */ function theme_translation( $translation, $text, $domain ){ if( $domain == TIELABS_TEXTDOMAIN || $domain == 'amp' ){ $translations = tie_get_option( 'translations' ); if( ! empty( $translations ) ){ // To minimize the calls of sanitize_title $sanitize_text = sanitize_title( htmlspecialchars( $text ) ); if( ! empty( $translations[ $sanitize_text ] ) ){ return htmlspecialchars_decode( $translations[ $sanitize_text ] ); } } } return $translation; } /** * Add the inline scripts to the Footer */ function footer_inline_scripts(){ // Check if we are in an AMP page if( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ){ return; } // Print the inline scripts if the BWP is active if( ! empty( $GLOBALS['tie_inline_scripts'] ) && TIELABS_HELPER::is_js_minified() ){ echo ''; } } /** * Add Misc Footer Conetnt */ function footer_misc(){ // Check if we are in an AMP page if( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ){ return; } // Custom Footer Code if ( tie_get_option( 'footer_code' ) ){ echo do_shortcode( apply_filters( 'TieLabs/footer_code', tie_get_option( 'footer_code' ) ) ); } // Reading Position Indicator if ( tie_get_option( 'reading_indicator' ) && is_single() && ! tie_get_option( 'autoload_posts' ) ){ echo '
'; } // Live Search if( tie_menu_has_search( 'top_nav', true ) || tie_menu_has_search( 'main_nav', true ) || ( tie_get_option( 'mobile_header_components_search') && tie_get_option( 'mobile_header_live_search') ) ){ echo '
'; } // Scrollbar - Used to get the default scrollbar width. echo '
'; // Facebook buttons echo '
'; } /** * Add the Popup module to the footer */ function popup_module(){ // Check if we are in an AMP page if( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ){ return; } TIELABS_HELPER::get_template_part( 'templates/popup' ); } /** * Add an extra class to the comment item if the avatar is active */ function is_avatar_enabled( $classes ){ if( is_array( $classes ) && get_option( 'show_avatars' ) ){ $classes[] = 'has-avatar'; } return $classes; } /** * Exclude post types and categories From Search results */ function search_filters( $query ){ if( is_admin() || isset( $_GET['post_type'] ) ){ return $query; } if( is_search() && $query->is_main_query() ){ // Exclude Post types from search if ( ($exclude_post_types = tie_get_option( 'search_exclude_post_types' )) && is_array( $exclude_post_types ) ){ $args = array( 'public' => true, 'exclude_from_search' => false, ); $post_types = get_post_types( $args ); foreach ( $exclude_post_types as $post_type ){ unset( $post_types[ $post_type ] ); } $query->set( 'post_type', $post_types ); } // Exclude specific categoies from search if ( tie_get_option( 'search_cats' ) ){ $query->set( 'cat', tie_get_option( 'search_cats' ) ); } } return $query; } /** * Change the posts order in the category page */ function category_posts_order( $query ){ if( ! is_admin() && is_category() && $query->is_main_query() ){ $current_category = get_queried_object(); if( ! empty( $current_category->term_id ) ){ $posts_order = tie_get_category_option( 'posts_order', $current_category->term_id ); // Posts Order if( ! empty( $posts_order ) ){ if( $posts_order == 'views' && tie_get_option( 'tie_post_views' ) ){ // Most Viewd posts $query->set( 'orderby', 'meta_value_num' ); $query->set( 'meta_key', apply_filters( 'TieLabs/views_meta_field', 'tie_views' ) ); } elseif( $posts_order == 'popular' ){ // Popular Posts by comments $query->set( 'orderby', 'comment_count' ); } elseif( $posts_order == 'title' ){ $query->set( 'orderby', 'title' ); $query->set( 'order', 'ASC' ); } else{ $query->set( 'orderby', $posts_order ); } } } } return $query; } /** * Random Article */ function redirect_random_post(){ if( wp_doing_ajax() ){ return; } if( isset( $_GET['random-post'] ) && ( tie_get_option( 'top-nav-components_random' ) || tie_get_option( 'main-nav-components_random' ) ) ) { $args = array( 'posts_per_page' => 1, 'orderby' => 'rand', 'fields' => 'ids', 'no_found_rows' => true, 'ignore_sticky_posts' => true, ); $random_post = new WP_Query ( $args ); while ( $random_post->have_posts () ){ $random_post->the_post(); wp_redirect( get_permalink() ); exit; } } } /** * Widgets Small Image Class * * By default WordPress uses 2 classes attachment-{size} size-{size} * we need to add a general class doesn't linked with the thumb name */ function small_thumb_image_class( $attr, $attachment, $size = false ) { if( ! empty( $size ) && $size == TIELABS_THEME_SLUG.'-image-small' ){ $attr['class'] .= ' tie-small-image'; } return $attr; } /** * Gif images */ function gif_image( $image, $attachment_id, $size, $icon ){ if( ! tie_get_option( 'disable_featured_gif' ) ){ $file_type = ! empty( $image[0] ) ? wp_check_filetype( $image[0] ) : false; if( ! empty( $file_type ) && $file_type['ext'] == 'gif' && $size != 'full' ){ $full_image = wp_get_attachment_image_src( $attachment_id, $size = 'full', $icon ); // For the avatars we need to keep the original width and height if( ! empty( $full_image ) && in_array( 'get_avatar', $GLOBALS['wp_current_filter'] ) ){ $full_image[1] = $image[1]; $full_image[2] = $image[2]; } return $full_image; } } return $image; } /** * Modify Excerpts */ function post_excerpt( $text = '' ){ $raw_excerpt = $text; if ( '' == $text ){ //$text = get_the_content( '' ); // Causes issues with the new Posts List Blocks $_post = get_post(); $text = ! empty( $_post->post_content ) ? $_post->post_content : ''; $text = apply_filters( 'TieLabs/exclude_content', $text ); /** * If images with class wp-image-{ID} exists in the conetnt, WordPress make a DB request to get andd add the srcset * Since we are in excerpt we don't need that, Great affect on archives pages */ $text = str_replace( 'wp-image-', 'tie-image', $text ); $text = strip_shortcodes( $text ); $text = apply_filters( 'the_content', $text ); $text = str_replace( ']]>', ']]>', $text ); $excerpt_length = apply_filters( 'excerpt_length', 55 ); $excerpt_more = apply_filters( 'excerpt_more', ' ' . '[…]' ); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); } return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt ); } /** * Global Cache Key */ function cache_key( $key ){ return 'tie-cache-'. TIELABS_HELPER::get_locale() . $key; } /** * Change the number of tags in the cloud tags */ function tag_widget_limit( $args ){ if( isset($args['taxonomy']) && $args['taxonomy'] == 'post_tag' ){ $args['number'] = 18; } return $args; } /** * Remove the default Tag CLoud titles if the title field is empty */ function tagcloud_widget_title( $title = false, $instance = false, $id_base = false ){ if( $id_base == 'tag_cloud' && empty( $instance['title'] ) ){ return false; } return $title; } /** * Custom Dashboard login URL */ function dashboard_login_logo_url(){ if( tie_get_option( 'dashboard_logo_url' ) ){ return tie_get_option( 'dashboard_logo_url' ); } } /** * Custom Dashboard login page logo */ function dashboard_login_logo(){ if( tie_get_option( 'dashboard_logo' ) ){ echo ''; } } /** * Remove anything that looks like an archive title prefix ("Archive:", "Foo:", "Bar:"). */ function archive_title( $title ){ if ( is_category() ) { return single_cat_title( '', false ); } elseif ( is_tag() ) { return single_tag_title( '', false ); } elseif ( is_author() ) { return '' . get_the_author() . ''; } elseif ( is_post_type_archive() ) { return post_type_archive_title( '', false ); } elseif ( is_tax() ) { return single_term_title( '', false ); } return $title; } /** * Add Number and Next / prev multiple post pages */ function pages_next_and_number( $args ){ if( $args['next_or_number'] == 'next_and_number' ){ global $page, $numpages, $multipage, $more; $args['next_or_number'] = 'number'; $prev = ''; $next = ''; if ( $multipage && $more ){ $i = $page - 1; if ( $i && $more ){ $prev .= _wp_link_page($i); $prev .= $args['link_before']. $args['previouspagelink'] . $args['link_after'] . ''; } $i = $page + 1; if ( $i <= $numpages && $more ){ $next .= _wp_link_page($i); $next .= $args['link_before']. $args['nextpagelink'] . $args['link_after'] . ''; } } $args['before'] = $args['before'].$prev; $args['after'] = $next.$args['after']; } return $args; } /** * Excerpt More */ function excerpt_more( $more ){ return ' …'; } /** * Theme Generator Meta */ function meta_generator(){ $active_theme = wp_get_theme(); if ( is_child_theme() ) { $active_theme = wp_get_theme( $active_theme->Template ); } if( ! empty( $active_theme->Name ) ){ $theme_info = apply_filters( 'TieLabs/theme_meta_generator', $active_theme->Name .' '. TIELABS_DB_VERSION ); if( ! empty( $theme_info ) ){ echo "\n" . "" . "\n"; } } } /** * If the post doesn't have a Primary Category, use the Primary Category of Yoast if it is available */ function yoast_seo_primary_category( $category = false ){ if( class_exists( 'WPSEO_Meta' ) ){ $wpseo_primary_term = get_post_meta( get_the_id(), WPSEO_Meta::$meta_prefix . 'primary_category', true ); if( ! empty( $wpseo_primary_term ) ){ $get_the_category = TIELABS_WP_HELPER::get_term_by( 'id', $wpseo_primary_term, 'category' ); if ( ! empty( $get_the_category ) && ! is_wp_error( $get_the_category ) ) { return $get_the_category; } } } return false; } /** * Always return true, If there is a default featured image */ function has_post_thumbnail( $has_thumbnail ) { if( tie_get_option( 'default_featured_image' ) && tie_get_option( 'default_featured_image_id' ) ){ $has_thumbnail = true; } return $has_thumbnail; } /** * Set a default featured image if it is missing */ function default_featured_image( $html, $post_id, $post_thumbnail_id, $size, $attr ) { // Return if the post has a featured image if( ! empty( $html ) ){ return $html; } // Check if the default eatured image option is active if( ! tie_get_option( 'default_featured_image' ) || ! tie_get_option( 'default_featured_image_id' ) ){ return $html; } $default_thumbnail_id = tie_get_option( 'default_featured_image_id' ); // select the default thumb. return wp_get_attachment_image( $default_thumbnail_id, $size, false, $attr ); } /** * Translate numbers */ function translate_numbers( $the_number ) { if( ! ( is_admin() && ! wp_doing_ajax() ) ) { $translated_numbers = tie_get_option( 'translation_numbers' ); if( ! empty( $translated_numbers ) && is_array( $translated_numbers ) && count( $translated_numbers ) == 10 ){ $original_numbers = array( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ); return str_replace( $original_numbers, $translated_numbers, $the_number ); } } return $the_number; } } // Single instance. $TIELABS_FILTERS = new TIELABS_FILTERS();/** * Taqyeem Class * */ defined( 'ABSPATH' ) || exit; // Exit if accessed directly if( ! class_exists( 'TIELABS_TAQYEEM' ) ) { class TIELABS_TAQYEEM{ /** * __construct * * Class constructor where we will call our filter and action hooks. */ function __construct(){ // Disable if the Taqyeem plugin is not active if( ! TIELABS_TAQYEEM_IS_ACTIVE ){ return; } // Disable the Custom Styles and Typofraphy options add_filter( 'taqyeem_custom_styles', '__return_false' ); // Disable Updater and Verification add_filter( 'Taqyeem/Updater/disable', '__return_true' ); add_filter( 'Taqyeem/Verification/disable', '__return_true' ); // Disable the plugin Rich Snippets add_filter( 'tie_taqyeem_rich_snippets', '__return_false' ); // Remove Shortcodes code and Keep the content add_filter( 'taqyeem_exclude_content', 'TIELABS_HELPER::strip_shortcodes' ); // Dequeue Scripts and Styles add_filter( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ), 50 ); // Dequeue Scripts and Styles add_filter( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 50 ); // Change the reviews head box class add_filter( 'taqyeem_reviews_head_classes', array( $this, 'review_head_class' ) ); // Alter the Queries add_filter( 'TieLabs/Query/args', array( $this, 'best_reviews_query' ), 10, 2 ); // Alter the Related Posts Query add_filter( 'TieLabs/related_posts_query', array( $this, 'related_posts_query' ) ); // Alter the Check Also box Query add_filter( 'TieLabs/checkalso_query', array( $this, 'checkalso_query' ) ); // Default Widgets Posts Thumb Size add_filter( 'tie_taqyeem_widget_thumb_size', array( $this, 'reviews_thumb_size' ) ); // Allow the Rview Rich Snippet on Pages add_filter( 'TieLabs/is_page_rich_snippet', array( $this, 'rich_snippet_for_page' ) ); // Change the Review Rich Snippet add_filter( 'TieLabs/rich_snippet_schema', array( $this, 'review_rich_snippet' ) ); // Add Best Reviews to the post order option menu. add_filter( 'TieLabs/Options/Related/post_order_args', array( $this, 'posts_order_args' ) ); add_filter( 'TieLabs/Options/Checkalso/post_order_args', array( $this, 'posts_order_args' ) ); add_filter( 'TieLabs/Builder/Block/post_order_args', array( $this, 'posts_order_args' ) ); add_filter( 'TieLabs/Settings/Category/posts_order', array( $this, 'posts_order_args' ) ); add_filter( 'TieLabs/Widget/Slider/post_order_args', array( $this, 'posts_order_args' ) ); add_filter( 'TieLabs/Widget/Posts/post_order_args', array( $this, 'posts_order_args_2' ) ); // Prevent Taqyeem from displaying the review box in the content block in the builder add_action( 'TieLabs/Builder/before', array( $this, 'remove_review_block' ) ); // Replace the old icon classes with the new classes of Font Awesome 5.0 add_filter( 'taqyeem_buttons_icon', array( $this, 'replace_icon_fa5' ) ); } /** * Allow the Rview Rich Snippet on Pages */ function rich_snippet_for_page(){ if( tie_get_postdata( 'taq_review_position' ) ){ return true; } } /** * Change the Review Rich Snippet */ function review_rich_snippet( $schema ){ // Check if the Taqyeem Structured Data is active, current post has review and the Taqyeem version is >= 2.3.0 if( ! taqyeem_get_option( 'structured_data' ) || ! tie_get_postdata( 'taq_review_position' ) || ! function_exists( 'taqyeem_review_get_rich_snippet' ) ){ return $schema; } // Unset some data unset( $schema['articleBody'] ); unset( $schema['articleSection'] ); // Get the Review structure data $review_rich_snippet = taqyeem_review_get_rich_snippet(); if( $review_rich_snippet['@type'] == 'product' ){ $schema = $review_rich_snippet; } else{ // Add the data to the post structure data $schema['@type'] = 'review'; $schema['itemReviewed'] = $review_rich_snippet['itemReviewed']; $schema['reviewBody'] = $review_rich_snippet['reviewBody']; $schema['reviewRating'] = $review_rich_snippet['reviewRating']; } // return the modefied data return $schema; } /** * Change the reviews head box class */ function review_head_class( $class ){ return tie_get_box_class( $class ); } /** * Alter the query for the best reviews */ function best_reviews_query( $args, $block ){ if( ! empty( $block['order'] ) && $block['order'] == 'best' ){ $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'taq_review_score'; } return $args; } /** * Alter the Related Posts Query */ function related_posts_query( $args ){ if( tie_get_option( 'related_order' ) == 'best' ){ $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'taq_review_score'; } return $args; } /** * Alter the Check Also Query */ function checkalso_query( $args ){ if( tie_get_option( 'check_also_order' ) == 'best' ){ $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'taq_review_score'; } return $args; } /** * Add Best Reviews to the post order option menu. */ function posts_order_args( $args ){ $args['best'] = esc_html__( 'Best Reviews', TIELABS_TEXTDOMAIN ); return $args; } /** * Add Best Reviews to the post order option menu. */ function posts_order_args_2( $args ){ $args['standard']['best'] = esc_html__( 'Best Reviews', TIELABS_TEXTDOMAIN ); return $args; } /** * Default Widgets Posts Thumb Size */ function reviews_thumb_size(){ return TIELABS_THEME_SLUG.'-image-small'; } /** * Prevent Taqyeem from displaying the review box in the content block in the builder */ function remove_review_block(){ remove_filter( 'the_content', 'taqyeem_insert_review' ); } /** * Dequeue Scripts and Styles */ function enqueue_scripts(){ wp_dequeue_script( 'taqyeem-main' ); wp_dequeue_style( 'taqyeem-style' ); wp_enqueue_style( 'taqyeem-styles', TIELABS_TEMPLATE_URL.'/assets/css/plugins/taqyeem'. TIELABS_STYLES::is_minified() .'.css', array(), TIELABS_DB_VERSION, 'all' ); if( ! is_admin() ){ wp_dequeue_style( 'taqyeem-fontawesome' ); } } /** * Dequeue Scripts and Styles from admin */ function admin_enqueue_scripts(){ // Don't Load the main Font Awesome file of the theme in the add/edit posts screens, avoid issue with Taqyeem Button which uses v4.0 if( function_exists( 'tie_taqyeem_button_output' ) && get_post_type() ){ wp_dequeue_style( 'tie-fontawesome' ); } } /** * Replace the old icon classes with the new classes of Font Awesome 5.0 */ function replace_icon_fa5( $icon ){ return tie_fa4_to_fa5_value_migration( $icon ); } } // Instantiate the class new TIELABS_TAQYEEM(); } Our Step-by-Step Guide to Making a Holiday Budget – Baghdad Time
/** * The template part for displaying the post contents * * This template can be overridden by copying it to your-child-theme/templates/single-post/content.php. * * HOWEVER, on occasion TieLabs will need to update template files and you * will need to copy the new files to your child theme to maintain compatibility. * * @author TieLabs * @version 2.1.0 */ defined( 'ABSPATH' ) || exit; // Exit if accessed directly ?>
/** * Post Head Area * * This template can be overridden by copying it to your-child-theme/templates/single-post/head.php. * * HOWEVER, on occasion TieLabs will need to update template files and you * will need to copy the new files to your child theme to maintain compatibility. * * @author TieLabs * @version 5.0.0 */ defined( 'ABSPATH' ) || exit; // Exit if accessed directly /** * TieLabs/before_post_head hook. * */ do_action( 'TieLabs/before_post_head' ); ?>
Finance

Our Step-by-Step Guide to Making a Holiday Budget

Above Article Content Ad

Overspending to make the seasons merry can result in main post-holiday regrets.

Retail consultants predict the common client will spend $997.73 this 12 months on presents, meals, decor and extra, in line with the Nationwide Retail Federation’s annual survey on vacation spending. Is an additional thousand {dollars} in your finances?

As you begin your vacation procuring, it’s important to determine how a lot cash you may spend earlier than determining what you need to spend your cash on. Which means making a finances.

In case you put aside an hour to assessment your numbers and create a vacation finances, you’ll be capable of maintain that vacation cheer (and somewhat more money) lengthy into the brand new 12 months.

The best way to Make a Vacation Funds

Be happy to create your vacation finances utilizing your most popular technique, whether or not it’s an Excel or Google Sheets spreadsheet, pen-and-paper finances or budgeting app.

Whichever you select, having the data at your fingertips will make it easier to stick with your spending restrict and keep away from impulse shopping for.

1. Analyze Your Present Debt

It will not be nice, nevertheless it’s crucial: Earlier than you do the rest, take a very good have a look at your debt — particularly, your bank card debt.

If in case you have extra in your bank cards than you may repay this month, we urge you to rethink collaborating within the vacation procuring frenzy. A a lot better use of your hard-earned cash could be to pay down your bank card stability.

Skipping costly presents doesn’t imply you may’t bathe your family and friends with love. You can also make presents by hand (listed here are some reasonably priced reward concepts), or give them service coupons for favors — like cleansing their home or making them dinner.

In spite of everything, a present from the guts usually means greater than one thing that shall be out of favor subsequent 12 months.

2. Mission Your Whole Vacation Earnings

Bank cards within the clear? Time to estimate the overall quantity you’re going to earn over the vacation season.

In case you get the identical paycheck each two weeks, this shall be simple — double your paycheck in your month-to-month revenue.

Professional Tip

Assume exterior the paycheck in your vacation financial savings stash: Do you’ve got previous reward playing cards you need to use to buy presents (or give as presents)?

In case your pay is irregular, figuring your revenue will take somewhat extra effort. One possibility is to take a look at your pay stubs or financial institution accounts from this time final 12 months. (Try this information to budgeting in case your revenue modifications from month to month.)

In case your job — or pay — has modified since final 12 months, you may common the quantity you earned during the last three months. (If in case you have a very excessive month, throw it out; it’s higher to err on the decrease aspect.)

Bear in mind to additionally embody cash from aspect gigs and seasonal jobs.

3. Make a Listing of Bills

As soon as you understand how a lot you’ll earn throughout the vacation season, it’s time to calculate your bills.

Earlier than figuring out how a lot to allot for vacation bills, assessment your month-to-month finances to find out what more money you’ve got — or bills you may lower — to accommodate the additional spending.

Subtract your common bills — like hire or your mortgage, utility payments, groceries and gasoline — out of your projected revenue to determine how a lot cash you’ve got in your finances for the vacations.

Additionally, verify your calendar: If the deadline for annual funds like automotive registration or HOA charges fall inside the vacation season, you should definitely embody them in your bills.

4. Assign Classes for Vacation Spending

Now it’s time to determine methods to get your vacation bills to suit inside your finances.

Begin by estimating your anticipated vacation bills by class, excluding presents. Some expense that is perhaps in your checklist:

  • Journey.
  • Decorations.
  • Reward-wrapping provides.
  • Vacation meals.
  • Vacation events.
  • Vacation garments.
  • Vacation playing cards.
  • Donations.
  • Skilled vacation images.

After you determine these bills, subtract this quantity out of your vacation finances. Now you’ve got your procuring finances.

Is the quantity smaller than you may like? Think about making cuts from different classes if gift-giving is your precedence.

5. Create a Procuring Listing

All proper, Santa, who’s in your checklist?

It will be simple to overspend when you stopped at compiling the stuff you need to purchase. As an alternative, create a vacation budgeting worksheet with the next information:

  • Identify
  • Budgeted quantity
  • Reward thought
  • The place to buy
  • Gross sales, coupons and rebates (and deadlines or expiration dates)
  • Delivery prices

Holding your checklist inside your finances might require somewhat give-and-take. If in case you have your coronary heart set on shopping for mother that $300 mixer however you solely have $500 complete to spend, are you able to give you cheap presents for the rest of your checklist?

6. Begin Monitoring Costs

One of many keys to good vacation procuring is endurance. Properly, endurance and analysis.

Earlier than making any purchases, verify costs at a number of shops. Value-tracking and price-comparison instruments abound.

BuyHatke is a helpful browser extension that compares and tracks costs. If you store on Amazon, it additionally shows price-history graphs, so you may see if the present value is known as a discount. Or strive the SlickDeals app, which alerts you when costs drop in sure classes or at your favourite shops.

Or strive money-saving Chrome extensions that try this be just right for you — we’ve 15 that may make it easier to get monetary savings.

7. Keep on with It!

This step could also be final, nevertheless it’s one of the crucial essential (and undoubtedly the toughest to comply with).

Sticking to your finances is the one strategy to keep away from a vacation hangover — no less than financially. It’ll take some willpower, nevertheless it’s value it.

To assist, create a vacation expense class with an all-in-one device like Mint (try our Mint assessment).

Professional Tip

Need to put an finish to the infinite (and pricy) pile of presents? Strive creating a brand new vacation custom: the four-gift rule.

In case you favor one thing extra tactile, withdraw your vacation procuring finances in money and maintain it in a jar.

In case you purchase something on-line or with a bank card, take that quantity out of the jar and put it right into a separate envelope, which you’ll be able to later re-deposit into your checking account. As soon as that jar’s empty, so is your vacation finances.

Susan Shain is a contributing author to The BaghdadTime. 




Source link

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *