Skip to content

Instantly share code, notes, and snippets.

View shameemreza's full-sized avatar
🇧🇩
Problem-Solver | WooCommerce Expert | Customer-First Mindset

Shameem Reza shameemreza

🇧🇩
Problem-Solver | WooCommerce Expert | Customer-First Mindset
View GitHub Profile
@shameemreza
shameemreza / automatewoo-generate-coupon-on-purchase.php
Created May 21, 2025 04:00
Generates a unique coupon when a specific product (Bronze, Silver, or Gold Coupon) is purchased and emails it to the customer using AutomateWoo.
/**
* Generate a coupon when a specific product is purchased and email it to the customer.
* @param AutomateWoo\Workflow $workflow
*/
function my_automatewoo_generate_coupon( $workflow ) {
$order = $workflow->data_layer()->get_order();
if ( ! $order ) {
return;
}
@shameemreza
shameemreza / all-attribute-terms-shortcode.php
Created May 20, 2025 09:56
Shortcode to display all attribute terms in WooCommerce, including unused ones, with working filter links.
/**
* Shortcode: [all_attribute_terms attribute="pa_size"]
* Shows all terms for a product attribute, even if not assigned to products.
* Links use WooCommerce's layered nav filter format.
*/
function show_all_attribute_terms( $atts ) {
$atts = shortcode_atts( [
'attribute' => '',
], $atts );
@shameemreza
shameemreza / filter-distance-rate-shipping-by-lowest-cost.php
Created May 7, 2025 06:12
WooCommerce Distance Rate Shipping: Filter to only return the shipping rate with the lowest cost when multiple rates are available.
add_filter( 'woocommerce_package_rates', 'keep_only_lowest_distance_rate', 20, 2 );
function keep_only_lowest_distance_rate( $rates, $package ) {
$lowest_rate_key = '';
$lowest_cost = null;
foreach ( $rates as $rate_key => $rate ) {
if ( is_null( $lowest_cost ) || floatval( $rate->cost ) < $lowest_cost ) {
$lowest_cost = floatval( $rate->cost );
$lowest_rate_key = $rate_key;
add_action( 'woocommerce_cart_calculate_fees', function() {
if ( wcs_cart_contains_renewal() ) {
return;
}
$subscription_box_id = 54;
$cart_contents = WC()->cart->get_cart_contents();
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( empty( $cart_item[ 'wcsatt_data'][ 'active_subscription_scheme' ] ) ) {
continue;
}
@shameemreza
shameemreza / filter-products-no-vendor.php
Created April 28, 2025 02:00
Adds a "No Vendor" filter link to the WooCommerce Products admin screen for stores using WooCommerce Product Vendors.
// Add custom view for products without a vendor
add_filter( 'views_edit-product', function( $views ) {
$class = ( isset($_GET['no_vendor']) && $_GET['no_vendor'] == 1 ) ? 'current' : '';
$url = add_query_arg( 'no_vendor', '1', admin_url( 'edit.php?post_type=product' ) );
$views['no_vendor'] = "<a href='{$url}' class='{$class}'>No Vendor</a>";
return $views;
});
// Modify the query to show products without vendor when selected
add_action( 'pre_get_posts', function( $query ) {
@shameemreza
shameemreza / auto-delete-out-of-stock-products.php
Created April 22, 2025 09:15
Automatically delete products when stock hits zero, but only after the order is completed.
add_action( 'woocommerce_order_status_completed', function( $order_id ) {
$order = wc_get_order( $order_id );
if ( ! $order ) {
return;
}
foreach ( $order->get_items() as $item ) {
$product = $item->get_product();
@shameemreza
shameemreza / hide-bookable-product-templates-message.php
Created April 14, 2025 03:13
Hide bookable product templates message
add_action( 'admin_enqueue_scripts', function() {
remove_action( 'admin_notices', [ 'WC_Bookings_Admin_Install', 'bookable_product_templates_notice' ] );
});
//Hide the Bundle When a product is Out of Stock
add_filter( 'woocommerce_product_is_visible', 'hide_bundle_when_required_product_is_out_of_stock', 10, 2 );
function hide_bundle_when_required_product_is_out_of_stock( $visible, $product_id ) {
$product = wc_get_product( $product_id );
// Check if the product is a bundle
if ( $product && $product->is_type( 'bundle' ) ) {
$bundled_items = $product->get_bundled_items();
# Inside AutomateWoo, use the variable: {custom_function.aw_get_gift_card_code} to include the gift card code in the email.
# The gift card codes are stored as order item meta data.
function aw_get_gift_card_code( $workflow ) {
$order = $workflow->data_layer()->get_order();
foreach ( $order->get_items() as $item ) {
if ( $item->get_product()->is_type( 'gift-card' ) ) {
$gift_card_code = $item->get_meta( '_wc_gc_giftcard_code', true );
if ( ! empty( $gift_card_code ) ) {
return $gift_card_code;
add_filter( 'woocommerce_email_classes', function( $emails ) {
if ( isset( $emails['WC_GC_Email_Gift_Card_Received'] ) ) {
unset( $emails['WC_GC_Email_Gift_Card_Received'] );
}
return $emails;
}, 20 );