// 1. Make the product unpurchasable for non-doctors add_filter( ‘woocommerce_is_purchasable’, ‘wws_restrict_purchase_for_doctors’, 10, 2 ); function wws_restrict_purchase_for_doctors( $is_purchasable, $product ) { $allowed_role = ‘doctors’; $restricted_category = ‘doctors-only’; $product_id = $product->is_type( ‘variation’ ) ? $product->get_parent_id() : $product->get_id(); if ( has_term( $restricted_category, ‘product_cat’,…Continue reading
/** * Restrict add-to-cart on specific products to the ‘doctors’ wholesale role only. * * Usage: * 1. Set DOCTORS_ROLE_SLUG below to match the wholesale role slug you created in * WooCommerce > Wholesale Roles. * 2. On each product’s…Continue reading
add_filter( ‘iconic_wds_skip_cookie’, function() { return true; } );Continue reading
add_filter( ‘sptb_frequency_change_next_payment’, function( $bool, $user_id, $subscription ) { return false; }, 10, 3 );Continue reading
/** * Change wording of next payment date changed confirmation message via Toolbox for Subscriptions plugin from ‘shipment’ to ‘payment’ **/ add_filter( ‘jgtb_date_renewal_successful_message’, function( $message, $subscription ) { return ‘Next payment date has been successfully updated.’; }, 10, 2 );…Continue reading
add_filter( ‘jgtb_change_intervals’, function( $intervals, $subscription ) { foreach ( $intervals as $key => $interval ) { if ( ! in_array( $key, array( 1, 2 ) ) ) { // Numbers indicate which option (1 means weekly, 2 means every 2nd…Continue reading
add_filter( ‘woocommerce_product_description_heading’, ‘custom_change_description_heading_for_specific_categories’ ); function custom_change_description_heading_for_specific_categories( $heading ) { global $product; if ( ! is_product() || ! $product instanceof WC_Product ) { return $heading; } // Check if product has either ‘meals’ or ‘snacks’ category if ( has_term( [ ‘meals’,…Continue reading
add_filter( ‘manage_edit-shop_order_columns’, ‘bbloomer_add_new_order_admin_list_column’ ); function bbloomer_add_new_order_admin_list_column( $columns ) { $columns[‘item_count’] = ‘Item Count’; return $columns; } add_action( ‘manage_shop_order_posts_custom_column’, ‘bbloomer_add_new_order_admin_list_column_content’ ); function bbloomer_add_new_order_admin_list_column_content( $column ) { global $post; if ( ‘item_count’ === $column ) { $order = wc_get_order( $post->ID ); echo…Continue reading
add_shortcode(‘papa_macros_discount_message’, ‘papa_macros_discount_message_shortcode’); function papa_macros_discount_message_shortcode() { if ( ! function_exists(‘WC’) || ! WC()->cart ) { return ”; } $cart = WC()->cart; $manual_subtotal = 0; foreach ( $cart->get_cart() as $item ) { if ( ! isset($item[‘data’]) || ! is_object($item[‘data’]) ) continue; $price…Continue reading
// migration script (safe version) add_action(‘init’, function() { // 🔒 Only run if explicitly triggered if (!isset($_GET[‘run_license_migration’])) return; // 🔒 Only admins if (!current_user_can(‘administrator’)) { wp_die(‘Not allowed’); } // 🔒 Prevent running twice if (get_option(‘ibw_license_migration_done’)) { echo ‘Migration already completed.’;…Continue reading