Skip to content

Instantly share code, notes, and snippets.

Avatar

Stuart Duff stuartduff

View GitHub Profile
@stuartduff
stuartduff / woocommerce-dynamic-pricing-display-discount-table.php
Last active Aug 17, 2021
WooCommerce Dynamic Pricing display a table of dynamically generated discounts above the add to cart button http://cld.wthms.co/1ksKo/4u9gVw0f
View woocommerce-dynamic-pricing-display-discount-table.php
add_action( 'woocommerce_before_add_to_cart_button', 'sd_display_bulk_discount_table' );
function sd_display_bulk_discount_table() {
global $woocommerce, $post, $product;
$array_rule_sets = get_post_meta( $post->ID, '_pricing_rules', true );
if ( $array_rule_sets && is_array( $array_rule_sets ) && sizeof( $array_rule_sets ) > 0 ) {
@stuartduff
stuartduff / wc-stripe-add-product-metadata.php
Last active Aug 13, 2021
WooCommerce Stripe Add "Products" to Stripe Payment metadata
View wc-stripe-add-product-metadata.php
/*
* Add "Products" to Stripe metadata
*/
function filter_wc_stripe_payment_metadata( $metadata, $order, $source ) {
$count = 1;
foreach( $order->get_items() as $item_id => $line_item ){
$item_data = $line_item->get_data();
$product = $line_item->get_product();
$product_name = $product->get_name();
@stuartduff
stuartduff / sf-increase-recent-products-homepage.pgp
Last active Jul 9, 2021
Increase Storefront recent products homepage to 14
View sf-increase-recent-products-homepage.pgp
function increase_sf_recent_products( $args ) {
// Sets the maximum products to 14
$args['limit'] = 14;
// Output
return $args;
}
function remove_powerpack_filter() {
@stuartduff
stuartduff / wc-change-pakistani-rupee-symbol.php
Last active Jun 11, 2021
Change the pakistani rupe symbol in WooCommerce only on checkout page
View wc-change-pakistani-rupee-symbol.php
add_filter('woocommerce_currency_symbol', 'change_existing_currency_symbol', 10, 2);
function change_existing_currency_symbol( $currency_symbol, $currency ) {
if ( ! is_checkout() ) {
return $currency_symbol;
}
switch( $currency ) {
case 'PKR': $currency_symbol = 'PKR'; break;
@stuartduff
stuartduff / wc-store-onwer-pending-payment-email.php
Created May 26, 2021
This code will send an email to the WooCommerce store owner for Pending Payment orders
View wc-store-onwer-pending-payment-email.php
// New order notification only for "Pending" Order status
add_action( 'woocommerce_checkout_order_processed', 'pending_new_order_notification', 20, 1 );
function pending_new_order_notification( $order_id ) {
// Get an instance of the WC_Order object
$order = wc_get_order( $order_id );
// Only for "pending" order status
if( ! $order->has_status( 'pending' ) ) return;
// Get an instance of the WC_Email_New_Order object
@stuartduff
stuartduff / wc-subscriptions-only-allow-one-subscription.php
Created May 6, 2021
This code snippet for WooCommerce Subscriptions will only allow a single purchased subscription across all subscription products for customers.
View wc-subscriptions-only-allow-one-subscription.php
add_filter('woocommerce_add_to_cart_validation', 'check_num_of_subscriptions', 10, 2);
function check_num_of_subscriptions( $valid, $product_id )
{
$product_to_add = wc_get_product( $product_id );
if ( $product_to_add instanceof WC_Product_Subscription || $product_to_add instanceof WC_Product_Variable_Subscription) {
// alternative use: $has_sub = wcs_user_has_subscription( '', '', 'active' );
if ( has_active_subscription() ) {
@stuartduff
stuartduff / storefront-display-all-homepage-categories
Last active May 2, 2021
Display All Product Categories on Storefront homepage
View storefront-display-all-homepage-categories
/**
* Alters the output of the homepage product categories on the Storefront theme
* Affects the storefront_product_categories_args filter in /inc/storefront-template-functions.php
*/
function sd_display_all_home_product_categories( $args ) {
// Sets the maximum product categories to 50, you can increase this to display more if need be.
$args['limit'] = 50;
@stuartduff
stuartduff / storefront-homepage-all-product-categories.php
Created Apr 26, 2021
Displays all product categoris on the homepage of Storefront
View storefront-homepage-all-product-categories.php
function sd_display_four_home_product_categories( $args ) {
// Displays all product categoris on the homepage of Storefront
$args['limit'] = -1;
// Output
return $args;
}
add_filter( 'storefront_product_categories_args', 'sd_display_four_home_product_categories' );
@stuartduff
stuartduff / wc-remove-bookings-from-price.php
Created Apr 23, 2021
This code snippet will remove the word From: in the WooCommerce Bookings price display
View wc-remove-bookings-from-price.php
function custom_booking_product_price( $price, $product ) {
$target_product_types = array(
'booking'
);
if ( in_array ( $product->product_type, $target_product_types ) ) {
$price = str_replace("From:", "", $price);
return $price;
}
// return normal price
return $price;
@stuartduff
stuartduff / remove-billing-email-field..php
Created Apr 8, 2021
Remove billing email field from WooCommerce
View remove-billing-email-field..php
function custom_override_billing_fields( $fields ) {
unset($fields['billing_email']);
return $fields;
}
add_filter( 'woocommerce_billing_fields' , 'custom_override_billing_fields' );