HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: /var/www/html/ielts-store/wp-content/plugins/automatewoo/includes/Fields/Subscription_Products.php
<?php
// phpcs:ignoreFile

namespace AutomateWoo\Fields;

use AutomateWoo\Clean;

if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * This select field is limited to subscription products.
 * This generally shouldn't be used because any product can be used as a subscription.
 *
 * @class Subscription_Products
 */
class Subscription_Products extends Select {

	protected $name = 'subscription_products';

	public $multiple = true;


	function __construct() {
		parent::__construct( false );

		$this->set_title( __( 'Subscription products', 'automatewoo' ) );
		$this->set_placeholder( __( '[Any]', 'automatewoo' ) );

		$options = [];

		$query = new \WP_Query([
			'post_type' => 'product',
			'posts_per_page' => -1,
			'no_found_rows' => true,
			'tax_query' => [
				[
					'taxonomy' => 'product_type',
					'field' => 'slug',
					'terms' => [
						'subscription',
						'variable-subscription'
					],
				],
			],
		]);

		foreach ( $query->posts as $subscription_post ) {
			$product = wc_get_product( $subscription_post );

			$options[ $product->get_id() ] = $product->get_formatted_name();

			if ( $product->is_type('variable-subscription') ) {
				foreach ( $product->get_children() as $variation_id ) {
					$variation = wc_get_product( $variation_id );
					$options[ $variation_id ] = $variation->get_formatted_name();
				}
			}
		}

		$this->set_options( $options );
	}


	/**
	 * Sanitizes the value of the field.
	 *
	 * @since 4.4.0
	 *
	 * @param array|string $value
	 *
	 * @return array|string
	 */
	function sanitize_value( $value ) {
		if ( $this->multiple ) {
			return Clean::ids( $value );
		}
		else{
			return Clean::id( $value );
		}
	}

}