WC_AJAX::load_variations
Load variations via AJAX.
Method of the class: WC_AJAX{}
No Hooks.
Returns
null. Nothing (null).
Usage
$result = WC_AJAX::load_variations();
WC_AJAX::load_variations() WC AJAX::load variations code WC 10.5.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' => ProductType::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 );
$base_cost = self::base_cost_or_null( $product_object );
foreach ( $variations as $variation_object ) {
self::render_variation_html( $product_object, $variation_object, $loop, $base_cost );
++$loop;
}
}
wp_die();
}