WC_Product_Variable_Data_Store_CPT::child_has_stock_status
Does a child have a stock status?
Method of the class: WC_Product_Variable_Data_Store_CPT{}
No Hooks.
Returns
true|false.
Usage
$WC_Product_Variable_Data_Store_CPT = new WC_Product_Variable_Data_Store_CPT(); $WC_Product_Variable_Data_Store_CPT->child_has_stock_status( $product, $status );
- $product(WC_Product) (required)
- Product object.
- $status(string) (required)
'instock','outofstock', or'onbackorder'.
Changelog
| Since 3.3.0 | Introduced. |
WC_Product_Variable_Data_Store_CPT::child_has_stock_status() WC Product Variable Data Store CPT::child has stock status code WC 10.6.2
public function child_has_stock_status( $product, $status ) {
global $wpdb;
$children = $product->get_children();
if ( $children ) {
$format = array_fill( 0, count( $children ), '%d' );
$query_in = '(' . implode( ',', $format ) . ')';
$query_args = array( 'stock_status' => $status ) + $children;
// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
if ( get_option( 'woocommerce_product_lookup_table_is_generating' ) ) {
$query = "SELECT COUNT( post_id ) FROM {$wpdb->postmeta} WHERE meta_key = '_stock_status' AND meta_value = %s AND post_id IN {$query_in}";
} else {
$query = "SELECT COUNT( product_id ) FROM {$wpdb->wc_product_meta_lookup} WHERE stock_status = %s AND product_id IN {$query_in}";
}
$children_with_status = $wpdb->get_var(
$wpdb->prepare(
$query,
$query_args
)
);
// phpcs:enable WordPress.DB.PreparedSQL.NotPrepared
} else {
$children_with_status = 0;
}
return (bool) $children_with_status;
}