WC_Product_Variable_Data_Store_CPT::child_has_stock_status()
Does a child have a stock status?
Метод класса: WC_Product_Variable_Data_Store_CPT{}
Хуков нет.
Возвращает
true|false
.
Использование
$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) (обязательный)
- Product object.
- $status(строка) (обязательный)
- 'instock', 'outofstock', or 'onbackorder'.
Список изменений
С версии 3.3.0 | Введена. |
Код WC_Product_Variable_Data_Store_CPT::child_has_stock_status() WC Product Variable Data Store CPT::child has stock status WC 8.7.0
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; }