WordPress Free Plugin That Supports PayPal, Stripe, Constant Contact

Sunday, 6 April 2025

 WPForms Lite free WordPress plugin supports PayPal, Stripe, and Constant Contact.

https://wordpress.org/plugins/wpforms-lite/

How to add custom discounts to the WooCommerce checkout page WordPress

Saturday, 5 April 2025

Original article is found here
/**
 * @snippet       Dynamic Fee @ WooCommerce Checkout
 * @how-to        businessbloomer.com/woocommerce-customization
 * @author        Rodolfo Melogli, Business Bloomer
 * @testedwith    WooCommerce 3.9
 * @community     https://businessbloomer.com/club/
 * 
 */
 
// Part 1 
// Display Radio Buttons
  
add_action( 'woocommerce_review_order_before_payment', 'bbloomer_checkout_radio_choice' );
  
function bbloomer_checkout_radio_choice() {
     
   $chosen = WC()->session->get( 'radio_chosen' );
   $chosen = empty( $chosen ) ? WC()->checkout->get_value( 'radio_choice' ) : $chosen;
   $chosen = empty( $chosen ) ? '0' : $chosen;
        
   $args = array(
   'type' => 'radio',
   'class' => array( 'form-row-wide', 'update_totals_on_change' ),
   'options' => array(
      '0' => 'Pay Special Offer Amount ₹3000/-',
      '-1000' => 'Pre-booking Request for ₹2000/-',
      '-2000' => 'Pre-booking Request for ₹1000/-',
   ),
   'default' => $chosen
   );
     
   echo '<div id="checkout-radio">';
   echo '<h3 style="margin-bottom:15px;">Customize Your Order!</h3>';
   woocommerce_form_field( 'radio_choice', $args, $chosen );
   echo '</div>';
     
}
  
// Part 2 
// Add Fee and Calculate Total
   
add_action( 'woocommerce_cart_calculate_fees', 'bbloomer_checkout_radio_choice_fee', 20, 1 );
  
function bbloomer_checkout_radio_choice_fee( $cart ) {
   
   if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
    
   $radio = WC()->session->get( 'radio_chosen' );
     
   if ( $radio ) {
      $cart->add_fee( 'Discounted Price', $radio );
   }
   
}
  
// Part 3 
// Add Radio Choice to Session
  
add_action( 'woocommerce_checkout_update_order_review', 'bbloomer_checkout_radio_choice_set_session' );
  
function bbloomer_checkout_radio_choice_set_session( $posted_data ) {
    parse_str( $posted_data, $output );
    if ( isset( $output['radio_choice'] ) ){
        WC()->session->set( 'radio_chosen', $output['radio_choice'] );
    }
}