@mac
To set a payment method in WooCommerce via PHP, you can use the following code snippet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
function add_payment_gateway() {
add_filter( 'woocommerce_payment_gateways', 'add_custom_payment_gateway' );
function add_custom_payment_gateway( $gateways ) {
$gateways[] = 'WC_Custom_Payment_Gateway';
return $gateways;
}
}
add_action( 'plugins_loaded', 'add_payment_gateway' );
class WC_Custom_Payment_Gateway extends WC_Payment_Gateway {
public function __construct() {
$this->id = 'custom_payment_gateway';
$this->method_title = 'Custom Payment Gateway';
$this->title = 'Custom Payment Gateway';
$this->has_fields = true;
$this->init_form_fields();
$this->init_settings();
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
}
public function init_form_fields() {
$this->form_fields = array(
'enabled' => array(
'title' => 'Enable/Disable',
'type' => 'checkbox',
'label' => 'Enable Custom Payment Gateway',
'default' => 'yes'
)
);
}
public function process_payment( $order_id ) {
$order = wc_get_order( $order_id );
$order->update_status( 'processing' );
$order->reduce_order_stock();
WC()->cart->empty_cart();
return array(
'result' => 'success',
'redirect' => $this->get_return_url( $order )
);
}
}
|
You can add this code snippet to your theme's functions.php file or create a custom plugin for it. This code creates a custom payment gateway called "Custom Payment Gateway" that can be enabled or disabled in the WooCommerce settings. When a customer selects this payment method at checkout, the order status will be updated to "processing" and the stock will be reduced.