Payments: Retrieve Saved Payment Method from Custom WC Orders Table
Retrieves saved payment method data from a custom WooCommerce Orders table.
Important: Always test customizations to your site on a staging environment before making changes to your live / production site. If you are not experienced with testing changes on a staging site, here is a good article to review.
/** * Retrieves the Payment Method from the custom WooCommerce Orders table. * Uses @see WC_Order_Data_Store_Custom_Table::get_order_data_from_table() * * @param array $payment_data The current payment data. * @param int $order_id The WooCommerce Order ID * @return array The payment info. */ function xx_patch_wc_custom_tables_plugin_payment_info( $payment_data, $order_id ){ // Get the WC Order $order = wc_get_order( $order_id ); // Create an instance and pull the data from the custom table. $wc_custom_table = new WC_Order_Data_Store_Custom_Table(); $data = $wc_custom_table->get_order_data_from_table( $order ); // Get the Gateway ID from the order in the Custom woocommerce orders table.. $payment_method_id = $data['payment_method']; // Retrieve the array of valid Autoship Gateways. $valid_methods = autoship_get_valid_payment_methods(); $payment_data = null; if ( isset( $valid_methods[$payment_method_id] ) ){ // Call the custom order payment data function if it exists. $function = "autoship_get_{$valid_methods[$payment_method_id]}_order_payment_data"; if ( function_exists( $function ) ) $payment_data = $function( $order_id ); } return $payment_data; } add_filter( 'autoship_order_payment_data', 'xx_patch_wc_custom_tables_plugin_payment_info', 10, 2 );