WC_Product_Variable_Data_Store_CPT::read_children()publicWC 1.0

Loads variation child IDs.

Method of the class: WC_Product_Variable_Data_Store_CPT{}

Hooks from the method

Return

Array.

Usage

$WC_Product_Variable_Data_Store_CPT = new WC_Product_Variable_Data_Store_CPT();
$WC_Product_Variable_Data_Store_CPT->read_children( $product, $force_read );
$product(WC_Product) (required) (passed by reference — &)
Product object.
$force_read(true|false)
True to bypass the transient.
Default: false

WC_Product_Variable_Data_Store_CPT::read_children() code WC 9.4.2

public function read_children( &$product, $force_read = false ) {
	$children_transient_name = 'wc_product_children_' . $product->get_id();
	$children                = get_transient( $children_transient_name );
	if ( empty( $children ) || ! is_array( $children ) ) {
		$children = array();
	}

	if ( ! isset( $children['all'] ) || ! isset( $children['visible'] ) || $force_read ) {
		$all_args = array(
			'post_parent' => $product->get_id(),
			'post_type'   => 'product_variation',
			'orderby'     => array(
				'menu_order' => 'ASC',
				'ID'         => 'ASC',
			),
			'fields'      => 'ids',
			'post_status' => array( 'publish', 'private' ),
			'numberposts' => -1, // phpcs:ignore WordPress.VIP.PostsPerPage.posts_per_page_numberposts
		);

		$visible_only_args                = $all_args;
		$visible_only_args['post_status'] = 'publish';

		if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
			$visible_only_args['tax_query'][] = array(
				'taxonomy' => 'product_visibility',
				'field'    => 'name',
				'terms'    => 'outofstock',
				'operator' => 'NOT IN',
			);
		}
		$children['all']     = get_posts( apply_filters( 'woocommerce_variable_children_args', $all_args, $product, false ) );
		$children['visible'] = get_posts( apply_filters( 'woocommerce_variable_children_args', $visible_only_args, $product, true ) );

		set_transient( $children_transient_name, $children, DAY_IN_SECONDS * 30 );
	}

	$children['all']     = wp_parse_id_list( (array) $children['all'] );
	$children['visible'] = wp_parse_id_list( (array) $children['visible'] );

	return $children;
}