Your cart is currently empty!
Properties assigned to a global-scope variable containing WooCommerce Shipping Calculator settings passed to the front-end scripts.
$script_data
(array): Array of WooCommerce Shipping Calculator parameters.add_filter( 'wsc_script_params', function( $script_data ) {
// your code to alter $script_data here...
return $script_data;
}
Filter to determine whether to load the plugin styles or not.
add_filter( 'wsc_load_styles', '__return_true' );
Filter to determine whether to load the plugin scripts or not.
add_filter( 'wsc_load_styles', '__return_true' );
Filter to change the position of the shipping calculator by chosing a specic theme template action hook.
add_filter( 'wsc_shipping_calculator_position_action', function( $action ) {
// Above the add to cart button on the Storefront theme.
return 'woocommerce_single_product_summary';
} );
Filter to change the priority of the above action hook that determinies position of the shipping calculator on the theme template.
add_filter( 'wsc_shipping_calculator_position_priority', function( $priority ) {
// Above the add to cart button on the Storefront theme.
return 29;
} );
Filter to change the output of the shipping_calculator shortcode..
add_filter( 'wsc_shipping_calculator_shortcode_output', function( $out ) {
return $out;
} );
Filter that determines if the shipping calculator should be loaded using AJAX.
add_filter( 'wsc_load_using_ajax', function( $load_using_ajax ) {
if ( ! is_user_logged_in() ) {
$load_using_ajax = true;
}
return $load_using_ajax;
} );
Filter that determines if the current page is a product page where the shipping calculator can be shown.
add_filter( 'wsc_is_shipping_calculator', function( $is_shipping_calculator ) {
if ( is_product() ) {
return true;
}
return $is_shipping_calculator;
} );
Filter that determines whether the current ajax call is made by the product page shipping calculator.
add_filter( 'wsc_is_shipping_calculator_ajax_call', function( $is_ajax_call ) {
if ( isset( $_REQUEST[ 'wsc' ] ) ) {
return true;
}
return $is_ajax_call;
} );
The ajax url argument that is used to trace the shipping calculator ajax calls.
add_filter( 'wsc_ajax_url_arg', function( $ajax_url_arg ) {
return 'wsc';
} );
Filter to change a WooCommerce Shipping Calculator setting.
add_filter( 'wsc_setting_position', function( $value, $setting ) {
// Gets the stored setting value from the database.
$value = get_option( 'wsc_' . $setting );
// Do something.
$value = 'above_title';
return $value;
}, 10, 2 );
Filter to change the admin WooCommerce settings fields.
add_filter( 'woocommerce_get_settings_calculator', function( $plugin_settings ) {
return $plugin_settings;
} );
Filter to change the shipping calculator position actions hooks and respective priorities.
add_filter( 'wsc_shipping_calculator_position_action_mapping', function( $position_action ) {
$position_actions['above_title'] = 'woocommerce_single_product_summary:4';
return $position_action;
} );
Filter to allow the selection of the shipping method within the shipping calculator.
add_filter( 'wsc_select_shipping_method', '__return_true' );
Filter to add extra classes to the main shipping calculator div.
add_filter( 'wsc_shipping_totals_class', function( $position_action ) {
return 'my-custom-css-class';
} );
Fired before the shipping calculator is displayed.
This hook is used to estimate the shipping before shipping calculator is displayed.
Fired after the shipping calculator is displayed.
This function outputs the shipping calculator.
This function should be used directly on your child theme template file.
// Display the shipping calculator.
wsc_display_shipping_calculator();
Verifies if the shipping calculator is being loaded using AJAX.
// Verifies if the shipping calculator is being loaded using AJAX.
if ( wsc_load_using_ajax() ) {
// Do something.
}
Verifies if the current page is the product page where the shipping calculator is shown.
// Verify if we are on a page where the shipping calculator can be used.
if ( wsc_is_shipping_calculator() {
// Do something.
wsc_display_shipping_calculator();
}
Verifies if it is an ajax call made by the shipping calculator on the product page.
// Verify if the AJAX call was made by the shipping calculator.
if ( wsc_is_shipping_calculator_ajax_call() {
// Do something.
...
}
Gets a plugin setting.
// Gets the chosen position defined on the admin settings area.
$position = wsc_get_setting( 'position' );
The Shipping Calculator for WooCommerce plugin makes it easy to select from a range of common positions on the single product page. You can do this using the Position option in the setup wizard or on the settings page.
We have also provided PHP functions and filters which allow developers to insert the shipping calculator programmatically.
You can use the:
wsc_display_shipping_calculator()
directly in your child theme template file.wsc_shipping_calculator_position_action
and wsc_shipping_calculator_position_priority
when outside a tab.wsc_setting_position
when you want to display the calculator as an extra tab on the product page.Lets assume that you are using the Storefront theme and you want to position the shipping calculator above the price.
You will need to copy the file:
/wp-content/plugins/woocommerce/templates/single-product/price.php
into
/wp-content/themes/storefront-child/woocommerce/single-product/price.php
and edit that file and add the wsc_display_shipping_calculator()
function:
<?php
...
global $product;
// Display the shipping calculator.
wsc_display_shipping_calculator();
?>
<p class="<?php echo esc_attr( apply_filters( 'woocommerce_product_price_class', 'price' ) ); ?>"><?php echo $product->get_price_html(); ?></p>?>
Lets assume that you are using the Storefront theme and you want to position the shipping calculator above the price.
Analyzing the /wp-content/plugins/woocommerce/templates/content-single-product.php
...
<div class="summary entry-summary">
<?php
/**
* Hook: woocommerce_single_product_summary.
*
* @hooked woocommerce_template_single_title - 5
* @hooked woocommerce_template_single_rating - 10
* @hooked woocommerce_template_single_price - 10
* @hooked woocommerce_template_single_excerpt - 20
* @hooked woocommerce_template_single_add_to_cart - 30
* @hooked woocommerce_template_single_meta - 40
* @hooked woocommerce_template_single_sharing - 50
* @hooked WC_Structured_Data::generate_product_data() - 60
*/
do_action( 'woocommerce_single_product_summary' );
?>
</div>
...
We can verify that the price is set on the:
action: woocommerce_single_product_summary
priority: 10
To position the shipping calculator above the price, we should use the same action hook but with a priority inferior than 10, for instance 9, so that it is displayed above the price.
/*
* Position the shipping calculator above the price.
*/
add_filter( 'wsc_shipping_calculator_position_action', function( $action ) {
// Price action hook name.
return 'woocommerce_single_product_summary';
} );
add_filter( 'wsc_shipping_calculator_position_priority', function( $priority ) {
// Above the price.
return 9;
} );
Note: If we wanted to display the calculator bellow the price, we would only need to change the priority to a number superior than 10, for instance 11.
Many themes don’t use the default WooCommerce action hooks to show the price on the website but they use their own filters. For instance, Astra theme have 2 filters that can be used to show the calculator above or bellow the price:
...
do_action( 'astra_woo_single_price_before' );
woocommerce_template_single_price();
do_action( 'astra_woo_single_price_after' );
...
So, if we want to display the calculator above the price for the Astra theme, we could use the following filter:
/*
* Position the shipping calculator above the price for the Astra theme.
*/
add_filter( 'wsc_shipping_calculator_position_action', function( $action ) {
return 'astra_woo_single_price_before';
} );
If you want to display the calculator as a tab you need to use the filter and set the value as a string composed by 3 elements:
Examples: after_description_tab, before_description_tab, after_a-custom-tab-id_tab
/*
* Position the shipping calculator as an extra tab afer the description tab.
*/
add_filter( 'wsc_setting_position', function( $position ) {
return 'after_description_tab';
} );