zantame
Forum Replies Created
Viewing 4 replies - 1 through 4 (of 4 total)
-
Hello Troy,
where exactly did you add the script
$('.single_variation').on('show_variation', function() { $('.price-range').hide(); });
I am trying to follow your instructions and use it in my website too.
Thank you
Forum: Plugins
In reply to: [WooCommerce] Variation Price Range functionWell i tried to replace it with the latest version of yours and it seems something is missing, cause there aren’t any changes.
So it might need a change in the function.php<?php /** * Road Themes functions and definitions * * Sets up the theme and provides some helper functions, which are used * in the theme as custom template tags. Others are attached to action and * filter hooks in WordPress to change core functionality. * * When using a child theme (see https://codex.www.ads-software.com/Theme_Development and * https://codex.www.ads-software.com/Child_Themes), you can override certain functions * (those wrapped in a function_exists() call) by defining them first in your child theme's * functions.php file. The child theme's functions.php file is included before the parent * theme's file, so the child theme functions would be used. * * Functions that are not pluggable (not wrapped in function_exists()) are instead attached * to a filter or action hook. * * For more information on hooks, actions, and filters, @link https://codex.www.ads-software.com/Plugin_API * * @package WordPress * @subpackage Road_Themes * @since Road Themes 1.0 */ //Require plugins require_once dirname( __FILE__ ) . '/class-tgm-plugin-activation.php'; function road_register_required_plugins() { $plugins = array( array( 'name' => 'RoadThemes Helper', 'slug' => 'roadthemes-helper', 'source' => get_stylesheet_directory() . '/plugins/roadthemes-helper.zip', 'required' => true, 'version' => '1.0.0', 'force_activation' => false, 'force_deactivation' => false, 'external_url' => '', ), array( 'name' => 'Mega Main Menu', 'slug' => 'mega_main_menu', 'source' => 'https://demo.roadthemes.com/plugins/mega_main_menu.zip', 'required' => true, 'external_url' => '', ), array( 'name' => 'Revolution Slider', 'slug' => 'revslider', 'source' => 'https://demo.roadthemes.com/plugins/revslider.zip', 'required' => true, 'external_url' => '', ), array( 'name' => 'Visual Composer', 'slug' => 'js_composer', 'source' => 'https://demo.roadthemes.com/plugins/js_composer.zip', 'required' => true, 'external_url' => '', ), // Plugins from the WordPress Plugin Repository. array( 'name' => 'Redux Framework', 'slug' => 'redux-framework', 'required' => true, 'force_activation' => false, 'force_deactivation' => false, ), array( 'name' => 'Contact Form 7', 'slug' => 'contact-form-7', 'required' => true, ), array( 'name' => 'MailPoet Newsletters', 'slug' => 'wysija-newsletters', 'required' => true, ), array( 'name' => 'Shortcodes Ultimate', 'slug' => 'shortcodes-ultimate', 'required' => true, ), array( 'name' => 'Simple Local Avatars', 'slug' => 'simple-local-avatars', 'required' => false, ), array( 'name' => 'TinyMCE Advanced', 'slug' => 'tinymce-advanced', 'required' => false, ), array( 'name' => 'Widget Importer & Exporter', 'slug' => 'widget-importer-exporter', 'required' => false, ), array( 'name' => 'WooCommerce', 'slug' => 'woocommerce', 'required' => true, ), array( 'name' => 'YITH WooCommerce Ajax Product Filter', 'slug' => 'yith-woocommerce-ajax-navigation', 'required' => true, ), array( 'name' => 'Woo Visual Attributes Swatches', 'slug' => 'woo-visual-attributes-swatches', 'source' => 'https://demo.roadthemes.com/plugins/woo-visual-attributes-swatches.zip', 'required' => true, 'external_url' => '', ), array( 'name' => 'YITH WooCommerce Compare', 'slug' => 'yith-woocommerce-compare', 'required' => true, ), array( 'name' => 'YITH WooCommerce Wishlist', 'slug' => 'yith-woocommerce-wishlist', 'required' => true, ), array( 'name' => 'YITH WooCommerce Zoom Magnifier', 'slug' => 'yith-woocommerce-zoom-magnifier', 'required' => true, ), ); /** * Array of configuration settings. Amend each line as needed. * If you want the default strings to be available under your own theme domain, * leave the strings uncommented. * Some of the strings are added into a sprintf, so see the comments at the * end of each line for what each argument will be. */ $config = array( 'default_path' => '', // Default absolute path to pre-packaged plugins. 'menu' => 'tgmpa-install-plugins', // Menu slug. 'has_notices' => true, // Show admin notices or not. 'dismissable' => true, // If false, a user cannot dismiss the nag message. 'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag. 'is_automatic' => false, // Automatically activate plugins after installation or not. 'message' => '', // Message to output right before the plugins table. 'strings' => array( 'page_title' => __( 'Install Required Plugins', 'tgmpa' ), 'menu_title' => __( 'Install Plugins', 'tgmpa' ), 'installing' => __( 'Installing Plugin: %s', 'tgmpa' ), // %s = plugin name. 'oops' => __( 'Something went wrong with the plugin API.', 'tgmpa' ), 'notice_can_install_required' => _n_noop( 'This theme requires the following plugin: %1$s.', 'This theme requires the following plugins: %1$s.' ), // %1$s = plugin name(s). 'notice_can_install_recommended' => _n_noop( 'This theme recommends the following plugin: %1$s.', 'This theme recommends the following plugins: %1$s.' ), // %1$s = plugin name(s). 'notice_cannot_install' => _n_noop( 'Sorry, but you do not have the correct permissions to install the %s plugin. Contact the administrator of this site for help on getting the plugin installed.', 'Sorry, but you do not have the correct permissions to install the %s plugins. Contact the administrator of this site for help on getting the plugins installed.' ), // %1$s = plugin name(s). 'notice_can_activate_required' => _n_noop( 'The following required plugin is currently inactive: %1$s.', 'The following required plugins are currently inactive: %1$s.' ), // %1$s = plugin name(s). 'notice_can_activate_recommended' => _n_noop( 'The following recommended plugin is currently inactive: %1$s.', 'The following recommended plugins are currently inactive: %1$s.' ), // %1$s = plugin name(s). 'notice_cannot_activate' => _n_noop( 'Sorry, but you do not have the correct permissions to activate the %s plugin. Contact the administrator of this site for help on getting the plugin activated.', 'Sorry, but you do not have the correct permissions to activate the %s plugins. Contact the administrator of this site for help on getting the plugins activated.' ), // %1$s = plugin name(s). 'notice_ask_to_update' => _n_noop( 'The following plugin needs to be updated to its latest version to ensure maximum compatibility with this theme: %1$s.', 'The following plugins need to be updated to their latest version to ensure maximum compatibility with this theme: %1$s.' ), // %1$s = plugin name(s). 'notice_cannot_update' => _n_noop( 'Sorry, but you do not have the correct permissions to update the %s plugin. Contact the administrator of this site for help on getting the plugin updated.', 'Sorry, but you do not have the correct permissions to update the %s plugins. Contact the administrator of this site for help on getting the plugins updated.' ), // %1$s = plugin name(s). 'install_link' => _n_noop( 'Begin installing plugin', 'Begin installing plugins' ), 'activate_link' => _n_noop( 'Begin activating plugin', 'Begin activating plugins' ), 'return' => __( 'Return to Required Plugins Installer', 'tgmpa' ), 'plugin_activated' => __( 'Plugin activated successfully.', 'tgmpa' ), 'complete' => __( 'All plugins installed and activated successfully. %s', 'tgmpa' ), // %s = dashboard link. 'nag_type' => 'updated' // Determines admin notice type - can only be 'updated', 'update-nag' or 'error'. ) ); tgmpa( $plugins, $config ); } add_action( 'tgmpa_register', 'road_register_required_plugins' ); //Init the Redux Framework if ( class_exists( 'ReduxFramework' ) && !isset( $redux_demo ) && file_exists( get_template_directory().'/theme-config.php' ) ) { require_once( get_template_directory().'/theme-config.php' ); } //Add Woocommerce support add_theme_support( 'woocommerce' ); remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10); remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10); //Override woocommerce widgets function road_override_woocommerce_widgets() { //Show mini cart on all pages if ( class_exists( 'WC_Widget_Cart' ) ) { unregister_widget( 'WC_Widget_Cart' ); include_once( 'woocommerce/class-wc-widget-cart.php' ); register_widget( 'Custom_WC_Widget_Cart' ); } } add_action( 'widgets_init', 'road_override_woocommerce_widgets', 15 ); //Change price html function road_woo_price_html( $price, $product ){ if($product->product_type=="variable") { if($product->get_variation_sale_price() && $product->get_variation_regular_price()!=$product->get_variation_sale_price()){ $rprice = $product->get_variation_regular_price(); $sprice = $product->get_variation_sale_price(); return '<span class="special-price">'.( ( is_numeric( $sprice ) ) ? woocommerce_price( $sprice ) : $sprice ) .'</span><span class="old-price">'. ( ( is_numeric( $rprice ) ) ? woocommerce_price( $rprice ) : $rprice ) .'</span>'; } else { $rprice = $product->get_variation_regular_price(); return '<span class="special-price">' . ( ( is_numeric( $rprice ) ) ? woocommerce_price( $rprice ) : $rprice ) . '</span>'; } } if ( $product->price > 0 ) { if ( $product->price && isset( $product->regular_price ) && ( $product->price!=$product->regular_price )) { $rprice = $product->regular_price; $sprice = $product->price; return '<span class="special-price">'.( ( is_numeric( $sprice ) ) ? woocommerce_price( $sprice ) : $sprice ) .'</span><span class="old-price">'. ( ( is_numeric( $rprice ) ) ? woocommerce_price( $rprice ) : $rprice ) .'</span>'; } else { $sprice = $product->price; return '<span class="special-price">' . ( ( is_numeric( $sprice ) ) ? woocommerce_price( $sprice ) : $sprice ) . '</span>'; } } else { return '<span class="special-price">0</span>'; } } add_filter( 'woocommerce_get_price_html', 'road_woo_price_html', 100, 2 ); // Add image to category description function road_woocommerce_category_image() { if ( is_product_category() ){ global $wp_query; $cat = $wp_query->get_queried_object(); $thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true ); $image = wp_get_attachment_url( $thumbnail_id ); if ( $image ) { echo '<p class="category-image-desc"><img src="' . esc_url($image) . '" alt="" /></p>'; } } } add_action( 'woocommerce_archive_description', 'road_woocommerce_category_image', 2 ); // Change products per page function road_woo_change_per_page() { global $road_opt; return $road_opt['product_per_page']; } add_filter( 'loop_shop_per_page', 'road_woo_change_per_page', 20 ); //Limit number of products by shortcode [products] add_filter( 'woocommerce_shortcode_products_query', 'road_woocommerce_shortcode_count' ); function road_woocommerce_shortcode_count( $args ) { global $road_opt, $road_productsfound; $road_productsfound = new WP_Query($args); $road_productsfound = $road_productsfound->post_count; return $args; } //Change number of related products on product page. Set your own value for 'posts_per_page' function road_woo_related_products_limit( $args ) { global $product, $road_opt; $args['posts_per_page'] = $road_opt['related_amount']; return $args; } add_filter( 'woocommerce_output_related_products_args', 'road_woo_related_products_limit' ); //move message to top remove_action( 'woocommerce_before_shop_loop', 'wc_print_notices', 10 ); add_action( 'woocommerce_show_message', 'wc_print_notices', 10 ); //remove cart total under cross sell remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 ); //Single product organize remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 ); add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 15 ); //Display social sharing on product page function road_woocommerce_social_share(){ global $road_opt; ?> <div class="share_buttons"> <?php if ($road_opt['share_code']!='') { echo wp_kses($road_opt['share_code'], array( 'div' => array( 'class' => array() ), 'span' => array( 'class' => array(), 'displayText' => array() ), )); } ?> </div> <?php } add_action( 'woocommerce_share', 'road_woocommerce_social_share', 35 ); //Display stock status on product page function road_product_stock_status(){ global $product; ?> <div class="stock-status"> <?php if($product->is_in_stock()){ ?> <p><?php _e('In stock', 'roadthemes');?></p> <?php } else { ?> <p><?php _e('Out of stock', 'roadthemes');?></p> <?php } ?> </div> <?php } add_action( 'woocommerce_single_product_summary', 'road_product_stock_status', 15 ); //Project organize remove_action( 'projects_before_single_project_summary', 'projects_template_single_title', 10 ); add_action( 'projects_single_project_summary', 'projects_template_single_title', 5 ); remove_action( 'projects_before_single_project_summary', 'projects_template_single_short_description', 20 ); remove_action( 'projects_before_single_project_summary', 'projects_template_single_gallery', 40 ); add_action( 'projects_single_project_gallery', 'projects_template_single_gallery', 40 ); //projects list remove_action( 'projects_loop_item', 'projects_template_loop_project_title', 20 ); //Change search form function road_search_form( $form ) { if(get_search_query()!=''){ $search_str = get_search_query(); } else { $search_str = __( 'Search...', 'roadthemes' ); } $form = '<form role="search" method="get" id="blogsearchform" class="searchform" action="' . esc_url(home_url( '/' ) ). '" > <div class="form-input"> <input class="input_text" type="text" value="'.esc_attr($search_str).'" name="s" id="search_input" /> <button class="button" type="submit" id="blogsearchsubmit"><i class="fa fa-search"></i></button> <input type="hidden" name="post_type" value="post" /> </div> </form>'; $form .= '<script type="text/javascript">'; $form .= 'jQuery(document).ready(function(){ jQuery("#search_input").focus(function(){ if(jQuery(this).val()=="'.__( 'Search...', 'roadthemes' ).'"){ jQuery(this).val(""); } }); jQuery("#search_input").focusout(function(){ if(jQuery(this).val()==""){ jQuery(this).val("'.__( 'Search...', 'roadthemes' ).'"); } }); jQuery("#blogsearchsubmit").click(function(){ if(jQuery("#search_input").val()=="'.__( 'Search...', 'roadthemes' ).'" || jQuery("#search_input").val()==""){ jQuery("#search_input").focus(); return false; } }); });'; $form .= '</script>'; return $form; } add_filter( 'get_search_form', 'road_search_form' ); //Change woocommerce search form function road_woo_search_form( $form ) { global $wpdb; if(get_search_query()!=''){ $search_str = get_search_query(); } else { $search_str = __( 'Search product...', 'roadthemes' ); } $form = '<form role="search" method="get" id="searchform" action="'.esc_url( home_url( '/' ) ).'">'; $form .= '<div>'; $form .= '<input type="text" value="'.esc_attr($search_str).'" name="s" id="ws" placeholder="" />'; $form .= '<button class="btn btn-primary" type="submit" id="wsearchsubmit"><i class="fa fa-search"></i></button>'; $form .= '<input type="hidden" name="post_type" value="product" />'; $form .= '</div>'; $form .= '</form>'; $form .= '<script type="text/javascript">'; $form .= 'jQuery(document).ready(function(){ jQuery("#ws").focus(function(){ if(jQuery(this).val()=="'.__( 'Search product...', 'roadthemes' ).'"){ jQuery(this).val(""); } }); jQuery("#ws").focusout(function(){ if(jQuery(this).val()==""){ jQuery(this).val("'.__( 'Search product...', 'roadthemes' ).'"); } }); jQuery("#wsearchsubmit").click(function(){ if(jQuery("#ws").val()=="'.__( 'Search product...', 'roadthemes' ).'" || jQuery("#ws").val()==""){ jQuery("#ws").focus(); return false; } }); });'; $form .= '</script>'; return $form; } add_filter( 'get_product_search_form', 'road_woo_search_form' ); // Replaces the excerpt "more" text by a link function road_new_excerpt_more($more) { return ''; } add_filter('excerpt_more', 'road_new_excerpt_more'); //Change excerpt length function road_change_excerpt_length( $length ) { global $road_opt; if(isset($road_opt['excerpt_length'])){ return $road_opt['excerpt_length']; } return 22; } add_filter( 'excerpt_length', 'road_change_excerpt_length', 999 ); //Add 'first, last' class to menu function road_first_and_last_menu_class($items) { $items[1]->classes[] = 'first'; $items[count($items)]->classes[] = 'last'; return $items; } add_filter('wp_nav_menu_objects', 'road_first_and_last_menu_class'); //Add first, last class to widgets function road_widget_first_last_class($params) { global $my_widget_num; $class = ''; $this_id = $params[0]['id']; // Get the id for the current sidebar we're processing $arr_registered_widgets = wp_get_sidebars_widgets(); // Get an array of ALL registered widgets if(!$my_widget_num) {// If the counter array doesn't exist, create it $my_widget_num = array(); } if(!isset($arr_registered_widgets[$this_id]) || !is_array($arr_registered_widgets[$this_id])) { // Check if the current sidebar has no widgets return $params; // No widgets in this sidebar... bail early. } if(isset($my_widget_num[$this_id])) { // See if the counter array has an entry for this sidebar $my_widget_num[$this_id] ++; } else { // If not, create it starting with 1 $my_widget_num[$this_id] = 1; } if($my_widget_num[$this_id] == 1) { // If this is the first widget $class .= ' widget-first '; } elseif($my_widget_num[$this_id] == count($arr_registered_widgets[$this_id])) { // If this is the last widget $class .= ' widget-last '; } $params[0]['before_widget'] = str_replace('first_last', ' '.$class.' ', $params[0]['before_widget']); return $params; } add_filter('dynamic_sidebar_params', 'road_widget_first_last_class'); //Change mega menu widget from div to li tag function road_mega_menu_widget_change($params) { $sidebar_id = $params[0]['id']; $pos = strpos($sidebar_id, '_menu_widgets_area_'); if ( !$pos == false ) { $params[0]['before_widget'] = '<li class="widget_menu">'.$params[0]['before_widget']; $params[0]['after_widget'] = $params[0]['after_widget'].'</li>'; } return $params; } add_filter('dynamic_sidebar_params', 'road_mega_menu_widget_change'); //Fix duplicate id of mega menu function road_mega_menu_id_change($params) { ob_start('road_mega_menu_id_change_call_back'); } function road_mega_menu_id_change_call_back($html){ $html = preg_replace('/id="mega_main_menu"/', 'id="mega_main_menu_first"', $html, 1); $html = preg_replace('/id="mega_main_menu_ul"/', 'id="mega_main_menu_ul_first"', $html, 1); return $html; } add_action('wp_loaded', 'road_mega_menu_id_change'); // Push sidebar widget content into a div function road_put_widget_content( $params ) { global $wp_registered_widgets; if( $params[0]['id']=='sidebar-category' ){ $settings_getter = $wp_registered_widgets[ $params[0]['widget_id'] ]['callback'][0]; $settings = $settings_getter->get_settings(); $settings = $settings[ $params[1]['number'] ]; if($params[0]['widget_name']=="Text" && isset($settings['title']) && $settings['text']=="") { // if text widget and no content => don't push content return $params; } if( isset($settings['title']) && $settings['title']!='' ){ $params[0][ 'after_title' ] .= '<div class="widget_content">'; $params[0][ 'after_widget' ] = '</div>'.$params[0][ 'after_widget' ]; } else { $params[0][ 'before_widget' ] .= '<div class="widget_content">'; $params[0][ 'after_widget' ] = '</div>'.$params[0][ 'after_widget' ]; } } return $params; } add_filter( 'dynamic_sidebar_params', 'road_put_widget_content' ); //Add breadcrumbs function road_breadcrumb() { global $post, $road_opt; $brseparator = '<span class="separator">></span>'; if (!is_home()) { echo '<div class="breadcrumbs">'; echo '<a href="'; echo home_url(); echo '">'; echo 'Home'; echo '</a>'.$brseparator; if (is_category() || is_single()) { the_category($brseparator); if (is_single()) { echo $brseparator; the_title(); } } elseif (is_page()) { if($post->post_parent){ $anc = get_post_ancestors( $post->ID ); $title = get_the_title(); foreach ( $anc as $ancestor ) { $output = '<a href="'.get_permalink($ancestor).'" title="'.get_the_title($ancestor).'">'.get_the_title($ancestor).'</a>'.$brseparator; } echo $output; echo '<span title="'.$title.'"> '.$title.'</span>'; } else { echo '<span> '.get_the_title().'</span>'; } } elseif (is_tag()) {single_tag_title();} elseif (is_day()) {echo"<span>Archive for "; the_time('F jS, Y'); echo'</span>';} elseif (is_month()) {echo"<span>Archive for "; the_time('F, Y'); echo'</span>';} elseif (is_year()) {echo"<span>Archive for "; the_time('Y'); echo'</span>';} elseif (is_author()) {echo"<span>Author Archive"; echo'</span>';} elseif (isset($_GET['paged']) && !empty($_GET['paged'])) {echo "<span>Blog Archives"; echo'</span>';} elseif (is_search()) {echo"<span>Search Results"; echo'</span>';} echo '</div>'; } else { echo '<div class="breadcrumbs">'; echo '<a href="'; echo home_url(); echo '">'; echo 'Home'; echo '</a>'.$brseparator; if(isset($road_opt['blog_header_text']) && $road_opt['blog_header_text']!=""){ echo esc_html($road_opt['blog_header_text']); } else { echo 'Blog'; } echo '</div>'; } } function roadlimitStringByWord ($string, $maxlength, $suffix = '') { if(function_exists( 'mb_strlen' )) { // use multibyte functions by Iysov if(mb_strlen( $string )<=$maxlength) return $string; $string = mb_substr( $string, 0, $maxlength ); $index = mb_strrpos( $string, ' ' ); if($index === FALSE) { return $string; } else { return mb_substr( $string, 0, $index ).$suffix; } } else { // original code here if(strlen( $string )<=$maxlength) return $string; $string = substr( $string, 0, $maxlength ); $index = strrpos( $string, ' ' ); if($index === FALSE) { return $string; } else { return substr( $string, 0, $index ).$suffix; } } } // Set up the content width value based on the theme's design and stylesheet. if ( ! isset( $content_width ) ) $content_width = 625; /** * Road Themes setup. * * Sets up theme defaults and registers the various WordPress features that * Road Themes supports. * * @uses load_theme_textdomain() For translation/localization support. * @uses add_editor_style() To add a Visual Editor stylesheet. * @uses add_theme_support() To add support for post thumbnails, automatic feed links, * custom background, and post formats. * @uses register_nav_menu() To add support for navigation menus. * @uses set_post_thumbnail_size() To set a custom post thumbnail size. * * @since Road Themes 1.0 */ function road_setup() { /* * Makes Road Themes available for translation. * * Translations can be added to the /languages/ directory. * If you're building a theme based on Road Themes, use a find and replace * to change 'roadthemes' to the name of your theme in all the template files. */ load_theme_textdomain( 'roadthemes', get_template_directory() . '/languages' ); // This theme styles the visual editor with editor-style.css to match the theme style. add_editor_style(); // Adds RSS feed links to <head> for posts and comments. add_theme_support( 'automatic-feed-links' ); // This theme supports a variety of post formats. add_theme_support( 'post-formats', array( 'image', 'gallery', 'video', 'audio' ) ); // Register menus register_nav_menu( 'primary', __( 'Primary Menu', 'roadthemes' ) ); register_nav_menu( 'mobilemenu', __( 'Mobile Menu', 'roadthemes' ) ); /* * This theme supports custom background color and image, * and here we also set up the default background color. */ add_theme_support( 'custom-background', array( 'default-color' => 'e6e6e6', ) ); /* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded <title> tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' ); // This theme uses a custom image size for featured images, displayed on "standard" posts. add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 1170, 9999 ); // Unlimited height, soft crop add_image_size( 'post-thumb', 400, 400, true ); // (cropped) add_image_size( 'post-thumbwide', 580, 380, true ); // (cropped) } add_action( 'after_setup_theme', 'road_setup' ); /** * Return the Google font stylesheet URL if available. * * The use of Open Sans by default is localized. For languages that use * characters not supported by the font, the font can be disabled. * * @since Road Themes 1.2 * * @return string Font stylesheet or empty string if disabled. */ function road_get_font_url() { $font_url = ''; /* translators: If there are characters in your language that are not supported * by Open Sans, translate this to 'off'. Do not translate into your own language. */ if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'roadthemes' ) ) { $subsets = 'latin,latin-ext'; /* translators: To add an additional Open Sans character subset specific to your language, * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. */ $subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'roadthemes' ); if ( 'cyrillic' == $subset ) $subsets .= ',cyrillic,cyrillic-ext'; elseif ( 'greek' == $subset ) $subsets .= ',greek,greek-ext'; elseif ( 'vietnamese' == $subset ) $subsets .= ',vietnamese'; $protocol = is_ssl() ? 'https' : 'http'; $query_args = array( 'family' => 'Open+Sans:400italic,700italic,400,700', 'subset' => $subsets, ); $font_url = add_query_arg( $query_args, "$protocol://fonts.googleapis.com/css" ); } return $font_url; } /** * Enqueue scripts and styles for front-end. * * @since Road Themes 1.0 */ function road_scripts_styles() { global $wp_styles, $wp_scripts, $road_opt; /* * Adds JavaScript to pages with the comment form to support * sites with threaded comments (when in use). */ if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) wp_enqueue_script( 'comment-reply' ); // Add Bootstrap JavaScript wp_enqueue_script( 'bootstrap-js', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), '3.2.0', true ); // Add Slick files wp_enqueue_script( 'slick-js', get_template_directory_uri() . '/js/slick/slick.min.js', array('jquery'), '1.3.15', true ); wp_enqueue_style( 'slick-style', get_template_directory_uri() . '/js/slick/slick.css', array(), '1.3.15' ); // Add Chosen js files wp_enqueue_script( 'chosen-js', get_template_directory_uri() . '/js/chosen/chosen.jquery.min.js', array('jquery'), '1.3.0', true ); wp_enqueue_script( 'chosenproto-js', get_template_directory_uri() . '/js/chosen/chosen.proto.min.js', array('jquery'), '1.3.0', true ); wp_enqueue_style( 'chosen-style', get_template_directory_uri() . '/js/chosen/chosen.min.css', array(), '1.3.0' ); // Add parallax script files // Add Fancybox wp_enqueue_script( 'fancybox', get_template_directory_uri() . '/js/fancybox/jquery.fancybox.pack.js', array('jquery'), '2.1.5', true ); wp_enqueue_script( 'fancybox-buttons', get_template_directory_uri() . '/js/fancybox/helpers/jquery.fancybox-buttons.js', array('jquery'), '1.0.5', true ); wp_enqueue_script( 'fancybox-media', get_template_directory_uri() . '/js/fancybox/helpers/jquery.fancybox-media.js', array('jquery'), '1.0.6', true ); wp_enqueue_script( 'fancybox-thumbs', get_template_directory_uri() . '/js/fancybox/helpers/jquery.fancybox-thumbs.js', array('jquery'), '1.0.7', true ); wp_enqueue_style( 'fancybox-css', get_template_directory_uri() . '/js/fancybox/jquery.fancybox.css', array(), '2.1.5' ); wp_enqueue_style( 'fancybox-buttons', get_template_directory_uri() . '/js/fancybox/helpers/jquery.fancybox-buttons.css', array(), '1.0.5' ); wp_enqueue_style( 'fancybox-thumbs', get_template_directory_uri() . '/js/fancybox/helpers/jquery.fancybox-thumbs.css', array(), '1.0.7' ); //Superfish wp_enqueue_script( 'superfish-js', get_template_directory_uri() . '/js/superfish/superfish.min.js', array('jquery'), '1.3.15', true ); //Add Twitter js wp_enqueue_script( 'twitter-js', 'https://platform.twitter.com/widgets.js', array('jquery'), '', true ); //Add Shuffle js wp_enqueue_script( 'modernizr-js', get_template_directory_uri() . '/js/modernizr.custom.min.js', array('jquery'), '2.6.2', true ); wp_enqueue_script( 'shuffle-js', get_template_directory_uri() . '/js/jquery.shuffle.min.js', array('jquery'), '3.0.0', true ); //Add mousewheel wp_enqueue_script( 'mousewheel-js', get_template_directory_uri() . '/js/jquery.mousewheel.min.js', array('jquery'), '3.1.12', true ); // Add theme.js file wp_enqueue_script( 'theme-js', get_template_directory_uri() . '/js/theme.js', array('jquery'), '20140826', true ); $font_url = road_get_font_url(); if ( ! empty( $font_url ) ) wp_enqueue_style( 'roadthemes-fonts', esc_url_raw( $font_url ), array(), null ); // Loads our main stylesheet. wp_enqueue_style( 'roadthemes-style', get_stylesheet_uri() ); // Mega Main Menu wp_enqueue_style( 'megamenu-css', get_template_directory_uri() . '/css/megamenu_style.css', array(), '2.0.4' ); // Load fontawesome css wp_enqueue_style( 'fontawesome-css', get_template_directory_uri() . '/css/font-awesome.min.css', array(), '4.2.0' ); // Load bootstrap css wp_enqueue_style( 'bootstrap-css', get_template_directory_uri() . '/css/bootstrap.min.css', array(), '3.2.0' ); // Compile Less to CSS $previewpreset = (isset($_REQUEST['preset']) ? $_REQUEST['preset'] : null); //get preset from url (only for demo/preview) if($previewpreset){ $_SESSION["preset"] = $previewpreset; } if(!isset($_SESSION["preset"])){ $_SESSION["preset"] = 1; } if($_SESSION["preset"] != 1) { $presetopt = $_SESSION["preset"]; } else { /* if no preset varialbe found in url, use from theme options */ $presetopt = $road_opt['preset_option']; } if(!isset($presetopt)) $presetopt = 1; /* in case first time install theme, no options found */ if($road_opt['enable_less']){ $themevariables = array( 'heading_font'=> $road_opt['headingfont']['font-family'], 'menu_font'=> $road_opt['menufont']['font-family'], 'body_font'=> $road_opt['bodyfont']['font-family'], 'price_font'=> $road_opt['pricefont']['font-family'], 'heading_color'=> $road_opt['headingfont']['color'], 'menu_color'=> $road_opt['menufont']['color'], 'text_color'=> $road_opt['bodyfont']['color'], 'primary_color' => $road_opt['primary_color'], 'sale_color' => $road_opt['sale_color'], 'saletext_color' => $road_opt['saletext_color'], 'rate_color' => $road_opt['rate_color'], ); switch ($presetopt) { case 2: $themevariables['primary_color'] = '#2DB2EA'; $themevariables['menu_color'] = '#232323'; break; case 3: $themevariables['primary_color'] = '#3ACF87'; $themevariables['menu_color'] = '#232323'; break; case 4: $themevariables['primary_color'] = '#FF8787'; $themevariables['menu_color'] = '#232323'; break; case 5: $themevariables['primary_color'] = '#EF7C3D'; $themevariables['menu_color'] = '#232323'; break; case 6: $themevariables['primary_color'] = '#DE4C4A'; $themevariables['menu_color'] = '#232323'; break; } if(function_exists('compileLessFile')){ compileLessFile('theme.less', 'theme'.$presetopt.'.css', $themevariables); compileLessFile('ie.less', 'ie'.$presetopt.'.css', $themevariables); } } // Load main theme css style wp_enqueue_style( 'roadthemes-css', get_template_directory_uri() . '/css/theme'.$presetopt.'.css', array(), '1.0.0' ); // Loads the Internet Explorer specific stylesheet. wp_enqueue_style( 'roadthemes-ie', get_template_directory_uri() . '/css/ie'.$presetopt.'.css', array( 'roadthemes-style' ), '20121010' ); $wp_styles->add_data( 'roadthemes-ie', 'conditional', 'lte IE 9' ); if($road_opt['enable_sswitcher']){ // Add styleswitcher.js file wp_enqueue_script( 'styleswitcher-js', get_template_directory_uri() . '/js/styleswitcher.js', array(), '20140826', false ); // Load styleswitcher css style wp_enqueue_style( 'styleswitcher-css', get_template_directory_uri() . '/css/styleswitcher.css', array(), '1.0.0' ); } } add_action( 'wp_enqueue_scripts', 'road_scripts_styles' ); //add custom css, sharing code to header function road_custom_code_header() { global $road_opt; if ( isset($road_opt['share_head_code']) && $road_opt['share_head_code']!='') { echo wp_kses($road_opt['share_head_code'], array( 'script' => array( 'type' => array(), 'src' => array(), 'async' => array() ), )); } if ( isset($road_opt['custom_css']) && $road_opt['custom_css']!='') { ?> <style><?php echo esc_html($road_opt['custom_css']); ?></style> <?php } } add_action( 'wp_head', 'road_custom_code_header'); //Include if ( !class_exists( 'road_widgets' ) && file_exists( get_template_directory().'/include/roadwidgets.php' ) ) { require_once( get_template_directory().'/include/roadwidgets.php' ); } if ( file_exists( get_template_directory().'/include/styleswitcher.php' ) ) { require_once( get_template_directory().'/include/styleswitcher.php' ); } if ( file_exists( get_template_directory().'/include/wooajax.php' ) ) { require_once( get_template_directory().'/include/wooajax.php' ); } if ( file_exists( get_template_directory().'/include/shortcodes.php' ) ) { require_once( get_template_directory().'/include/shortcodes.php' ); } /** * Filter TinyMCE CSS path to include Google Fonts. * * Adds additional stylesheets to the TinyMCE editor if needed. * * @uses road_get_font_url() To get the Google Font stylesheet URL. * * @since Road Themes 1.2 * * @param string $mce_css CSS path to load in TinyMCE. * @return string Filtered CSS path. */ function road_mce_css( $mce_css ) { $font_url = road_get_font_url(); if ( empty( $font_url ) ) return $mce_css; if ( ! empty( $mce_css ) ) $mce_css .= ','; $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) ); return $mce_css; } add_filter( 'mce_css', 'road_mce_css' ); /** * Filter the page menu arguments. * * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link. * * @since Road Themes 1.0 */ function road_page_menu_args( $args ) { if ( ! isset( $args['show_home'] ) ) $args['show_home'] = true; return $args; } add_filter( 'wp_page_menu_args', 'road_page_menu_args' ); /** * Register sidebars. * * Registers our main widget area and the front page widget areas. * * @since Road Themes 1.0 */ function road_widgets_init() { register_sidebar( array( 'name' => __( 'Blog Sidebar', 'roadthemes' ), 'id' => 'sidebar-1', 'description' => __( 'Sidebar on blog page', 'roadthemes' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h3 class="widget-title"><span>', 'after_title' => '</span></h3>', ) ); register_sidebar( array( 'name' => __( 'Category Sidebar', 'roadthemes' ), 'id' => 'sidebar-category', 'description' => __( 'Sidebar on product category page', 'roadthemes' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h3 class="widget-title"><span>', 'after_title' => '</span></h3>', ) ); register_sidebar( array( 'name' => __( 'Pages Sidebar', 'roadthemes' ), 'id' => 'sidebar-page', 'description' => __( 'Sidebar on content pages', 'roadthemes' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h3 class="widget-title"><span>', 'after_title' => '</span></h3>', ) ); } add_action( 'widgets_init', 'road_widgets_init' ); if ( ! function_exists( 'road_content_nav' ) ) : /** * Displays navigation to next/previous pages when applicable. * * @since Road Themes 1.0 */ function road_content_nav( $html_id ) { global $wp_query; $html_id = esc_attr( $html_id ); if ( $wp_query->max_num_pages > 1 ) : ?> <nav id="<?php echo $html_id; ?>" class="navigation" role="navigation"> <h3 class="assistive-text"><?php _e( 'Post navigation', 'roadthemes' ); ?></h3> <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'roadthemes' ) ); ?></div> <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'roadthemes' ) ); ?></div> </nav> <?php endif; } endif; if ( ! function_exists( 'road_pagination' ) ) : /* Pagination */ function road_pagination() { global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages, 'prev_text' => __('Previous', 'roadthemes'), 'next_text' =>__('Next', 'roadthemes'), ) ); } endif; if ( ! function_exists( 'road_comment' ) ) : /** * Template for comments and pingbacks. * * To override this walker in a child theme without modifying the comments template * simply create your own road_comment(), and that function will be used instead. * * Used as a callback by wp_list_comments() for displaying the comments. * * @since Road Themes 1.0 */ function road_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; switch ( $comment->comment_type ) : case 'pingback' : case 'trackback' : // Display trackbacks differently than normal comments. ?> <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>"> <p><?php _e( 'Pingback:', 'roadthemes' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'roadthemes' ), '<span class="edit-link">', '</span>' ); ?></p> <?php break; default : // Proceed with normal comments. global $post; ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> <article id="comment-<?php comment_ID(); ?>" class="comment"> <div class="comment-avatar"> <?php echo get_avatar( $comment, 50 ); ?> </div> <div class="comment-info"> <header class="comment-meta comment-author vcard"> <?php printf( '<cite><b class="fn">%1$s</b> %2$s</cite>', get_comment_author_link(), // If current post author is also comment author, make it known visually. ( $comment->user_id === $post->post_author ) ? '<span>' . __( 'Post author', 'roadthemes' ) . '</span>' : '' ); printf( '<time datetime="%1$s">%2$s</time>', get_comment_time( 'c' ), /* translators: 1: date, 2: time */ sprintf( __( '%1$s at %2$s', 'roadthemes' ), get_comment_date(), get_comment_time() ) ); ?> <div class="reply"> <?php comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply', 'roadthemes' ), 'after' => '', 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div><!-- .reply --> </header><!-- .comment-meta --> <?php if ( '0' == $comment->comment_approved ) : ?> <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'roadthemes' ); ?></p> <?php endif; ?> <section class="comment-content comment"> <?php comment_text(); ?> <?php edit_comment_link( __( 'Edit', 'roadthemes' ), '<p class="edit-link">', '</p>' ); ?> </section><!-- .comment-content --> </div> </article><!-- #comment-## --> <?php break; endswitch; // end comment_type check } endif; if ( ! function_exists( 'before_comment_fields' ) && ! function_exists( 'after_comment_fields' )) : //Change comment form function road_before_comment_fields() { echo '<div class="comment-input">'; } add_action('comment_form_before_fields', 'road_before_comment_fields'); function road_after_comment_fields() { echo '</div>'; } add_action('comment_form_after_fields', 'road_after_comment_fields'); endif; if ( ! function_exists( 'road_entry_meta' ) ) : /** * Set up post entry meta. * * Prints HTML with meta information for current post: categories, tags, permalink, author, and date. * * Create your own road_entry_meta() to override in a child theme. * * @since Road Themes 1.0 */ function road_entry_meta() { // Translators: used between list items, there is a space after the comma. $categories_list = get_the_category_list( __( ', ', 'roadthemes' ) ); $author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'roadthemes' ), get_the_author() ) ), get_the_author() ); $tag_list = get_the_tag_list( '', __( ', ', 'roadthemes' ) ); $num_comments = (int)get_comments_number(); $write_comments = ''; if ( comments_open() ) { if ( $num_comments == 0 ) { $comments = __('0 comments', 'roadthemes'); } elseif ( $num_comments > 1 ) { $comments = $num_comments . __(' comments', 'roadthemes'); } else { $comments = __('1 comment', 'roadthemes'); } $write_comments = '<a href="' . get_comments_link() .'">'. $comments.'</a>'; } $utility_text = __( 'Posted by %1$s / %2$s %3$s / %4$s', 'roadthemes' ); printf( $utility_text, $author, $categories_list, $write_comments, $tag_list); } endif; function road_entry_meta_small() { // Translators: used between list items, there is a space after the comma. $categories_list = get_the_category_list( __( ', ', 'roadthemes' ) ); $author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'roadthemes' ), get_the_author() ) ), get_the_author() ); $tag_list = get_the_tag_list( '', __( ', ', 'roadthemes' ) ); $num_comments = (int)get_comments_number(); $write_comments = ''; if ( comments_open() ) { if ( $num_comments == 0 ) { $comments = __('0 comments', 'roadthemes'); } elseif ( $num_comments > 1 ) { $comments = $num_comments . __(' comments', 'roadthemes'); } else { $comments = __('1 comment', 'roadthemes'); } $write_comments = '<a href="' . get_comments_link() .'">'. $comments.'</a>'; } $utility_text = __( '%1$s / %2$s / %3$s', 'roadthemes' ); printf( $utility_text, $author, $categories_list, $write_comments); } function road_entry_comments() { $date = sprintf( '<time class="entry-date" datetime="%3$s">%4$s</time>', esc_url( get_permalink() ), esc_attr( get_the_time() ), esc_attr( get_the_date( 'c' ) ), esc_html( get_the_date() ) ); $num_comments = (int)get_comments_number(); $write_comments = ''; if ( comments_open() ) { if ( $num_comments == 0 ) { $comments = __('<span>0</span> comments', 'roadthemes'); } elseif ( $num_comments > 1 ) { $comments = '<span>'.$num_comments .'</span>'. __(' comments', 'roadthemes'); } else { $comments = __('<span>1</span> comment', 'roadthemes'); } $write_comments = '<a href="' . get_comments_link() .'">'. $comments.'</a>'; } $utility_text = __( '%1$s', 'roadthemes' ); printf( $utility_text, $write_comments ); } function road_add_meta_box() { $screens = array( 'post' ); foreach ( $screens as $screen ) { add_meta_box( 'road_post_intro_section', __( 'Post featured content', 'roadthemes' ), 'road_meta_box_callback', $screen ); } } add_action( 'add_meta_boxes', 'road_add_meta_box' ); function road_meta_box_callback( $post ) { // Add an nonce field so we can check for it later. wp_nonce_field( 'road_meta_box', 'road_meta_box_nonce' ); /* * Use get_post_meta() to retrieve an existing value * from the database and use the value for the form. */ $value = get_post_meta( $post->ID, '_road_meta_value_key', true ); echo '<label for="road_post_intro">'; _e( 'This content will be used to replace the featured image, use shortcode here', 'roadthemes' ); echo '</label><br />'; //echo '<textarea id="road_post_intro" name="road_post_intro" rows="5" cols="50" />' . esc_attr( $value ) . '</textarea>'; wp_editor( $value, 'road_post_intro', $settings = array() ); } function road_save_meta_box_data( $post_id ) { /* * We need to verify this came from our screen and with proper authorization, * because the save_post action can be triggered at other times. */ // Check if our nonce is set. if ( ! isset( $_POST['road_meta_box_nonce'] ) ) { return; } // Verify that the nonce is valid. if ( ! wp_verify_nonce( $_POST['road_meta_box_nonce'], 'road_meta_box' ) ) { return; } // If this is an autosave, our form has not been submitted, so we don't want to do anything. if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } // Check the user's permissions. if ( isset( $_POST['post_type'] ) && 'page' == $_POST['post_type'] ) { if ( ! current_user_can( 'edit_page', $post_id ) ) { return; } } else { if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } } /* OK, it's safe for us to save the data now. */ // Make sure that it is set. if ( ! isset( $_POST['road_post_intro'] ) ) { return; } // Sanitize user input. $my_data = sanitize_text_field( $_POST['road_post_intro'] ); // Update the meta field in the database. update_post_meta( $post_id, '_road_meta_value_key', $my_data ); } add_action( 'save_post', 'road_save_meta_box_data' ); /** * Register postMessage support. * * Add postMessage support for site title and description for the Customizer. * * @since Road Themes 1.0 * * @param WP_Customize_Manager $wp_customize Customizer object. */ function road_customize_register( $wp_customize ) { $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; } add_action( 'customize_register', 'road_customize_register' ); /** * Enqueue Javascript postMessage handlers for the Customizer. * * Binds JS handlers to make the Customizer preview reload changes asynchronously. * * @since Road Themes 1.0 */ function road_customize_preview_js() { wp_enqueue_script( 'roadthemes-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20130301', true ); } add_action( 'customize_preview_init', 'road_customize_preview_js' ); // change variations price display to From $**** add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2); function custom_variation_price( $price, $product ) { $price = ''; if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) { $price .= '<span class="from">' . _x('From', 'min_price', 'woocommerce') . ' </span>'; $price .= woocommerce_price($product->get_price()); } return $price; }
Forum: Plugins
In reply to: [WooCommerce] Variation Price Range functionThank you for your quick response.
Is it possible to update it in the latest version by me?
I can just replace the code with your latest updated variable.php file and if it is needed to add some code in the function.php.
Forum: Plugins
In reply to: [Contact Form 7] Date format EuropeanHello,
I try also to set the date in European Style (dd-mm-yyyy) but i cannot. I tried to install Datepicker but it seems because this plugin isn’t updated it doesn’t work now.
I hope for a solution.
Thank you.
Viewing 4 replies - 1 through 4 (of 4 total)