Remove GSPC Product Add-ons in WC Order Email

Code

Filename: gspc-remove-addons-from-order-email.php

<?php
/**
 * Gravity Shop // Product Configurator // Remove GSPC Product Add-ons in WC Order Email
 * https://gravitywiz.com/documentation/gravity-shop-product-configurator/
 */
class GSPC_Remove_Addons_In_Order_Email {

	private $_args;

	public function __construct( $args = array() ) {

		$this->_args = wp_parse_args( $args, array(
			'form_id' => false,
		) );

		// do version check in the init to make sure if GF is going to be loaded, it is already loaded
		add_action( 'init', array( $this, 'init' ) );

	}

	public function init() {

		add_action( 'woocommerce_before_template_part', function( $template_name ) {
			if ( $template_name === 'emails/email-order-items.php' ) {
				add_filter( 'gspc_addons', array( $this, 'remove_gspc_product_addons' ), 10, 4 );
			}
		} );

		add_action( 'woocommerce_after_template_part', function( $template_name ) {
			if ( $template_name === 'emails/email-order-items.php' ) {
				remove_filter( 'gspc_addons', array( $this, 'remove_gspc_product_addons' ), 10, 4 );
			}
		} );

	}

	function remove_gspc_product_addons( $addons, $object, $form, $entry ) {
		if ( $this->is_applicable_form( $form ) ) {
			$addons = array();
		}
		return $addons;
	}

	public function is_applicable_form( $form ) {
		return empty( $this->_args['form_id'] ) || (int) ( $form['id'] ?? $form ) === (int) $this->_args['form_id'];
	}

}

# Configuration

new GSPC_Remove_Addons_In_Order_Email( array(
	'form_id' => 123,
) );

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Trouble installing this snippet? See our troubleshooting tips.
  • Need to include code? Create a gist and link to it in your comment.
  • Reporting a bug? Provide a URL where this issue can be recreated.

By commenting, I understand that I may receive emails related to Gravity Wiz and can unsubscribe at any time.