Restrict payment methods when buying a gift card

There are paid plugins available that will allow you to restrict the payment methods by product, however you can also do this yourself for the gift cards in a few steps.

1. Download the free Code Snippets plugin: https://wordpress.org/plugins/code-snippets/
2. Create a Snippet with the following code:

function pw_gift_card_payment_methods( $available_gateways ) {
    global $pw_gift_cards_redeeming;

    if ( is_admin() ) {
        return $available_gateways;
    }

    if ( isset( $pw_gift_cards_redeeming ) && $pw_gift_cards_redeeming->cart_contains_gift_card() ) {
        // Cash on Delivery
        unset( $available_gateways['cod'] );

        // Direct Bank Transfer
        unset( $available_gateways['bacs'] );
    }

    return $available_gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'pw_gift_card_payment_methods' );

If you are more comfortable editing your functions.php file that works, too.

The key used in the $available_gateways array can be found by going to WooCommerce -> Settings -> Payments -> Look for the “section=” in the URL for the payment method.