WC_AJAX::load_variations()public staticWC 1.0

Load variations via AJAX.

Method of the class: WC_AJAX{}

No Hooks.

Return

null. Nothing (null).

Usage

$result = WC_AJAX::load_variations();

WC_AJAX::load_variations() code WC 8.7.0

public static function load_variations() {
	ob_start();

	check_ajax_referer( 'load-variations', 'security' );

	if ( ! current_user_can( 'edit_products' ) || empty( $_POST['product_id'] ) ) {
		wp_die( -1 );
	}

	// Set $post global so its available, like within the admin screens.
	global $post;

	$loop           = 0;
	$product_id     = absint( $_POST['product_id'] );
	$post           = get_post( $product_id ); // phpcs:ignore
	$product_object = wc_get_product( $product_id );
	$per_page       = ! empty( $_POST['per_page'] ) ? absint( $_POST['per_page'] ) : 10;
	$page           = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
	$variations     = wc_get_products(
		array(
			'status'  => array( 'private', 'publish' ),
			'type'    => 'variation',
			'parent'  => $product_id,
			'limit'   => $per_page,
			'page'    => $page,
			'orderby' => array(
				'menu_order' => 'ASC',
				'ID'         => 'DESC',
			),
			'return'  => 'objects',
		)
	);

	if ( $variations ) {
		wc_render_invalid_variation_notice( $product_object );

		foreach ( $variations as $variation_object ) {
			$variation_id   = $variation_object->get_id();
			$variation      = get_post( $variation_id );
			$variation_data = array_merge( get_post_custom( $variation_id ), wc_get_product_variation_attributes( $variation_id ) ); // kept for BW compatibility.
			include __DIR__ . '/admin/meta-boxes/views/html-variation-admin.php';
			$loop++;
		}
	}
	wp_die();
}