WC_Product_Data_Store_CPT::update_visibility()
Update visibility terms based on props.
Метод класса: WC_Product_Data_Store_CPT{}
Хуки из метода
Возвращает
null
. Ничего (null).
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->update_visibility( $product, $force );
- $product(WC_Product) (обязательный) (передается по ссылке — &)
- Product object.
- $force(true|false)
- Force update. Used during create.
По умолчанию: false
Список изменений
С версии 3.0.0 | Введена. |
Код WC_Product_Data_Store_CPT::update_visibility() WC Product Data Store CPT::update visibility WC 9.5.1
protected function update_visibility( &$product, $force = false ) { $changes = $product->get_changes(); if ( $force || array_intersect( array( 'featured', 'stock_status', 'average_rating', 'catalog_visibility' ), array_keys( $changes ) ) ) { $terms = array(); if ( $product->get_featured() ) { $terms[] = 'featured'; } if ( 'outofstock' === $product->get_stock_status() ) { $terms[] = 'outofstock'; } $rating = min( 5, NumberUtil::round( $product->get_average_rating(), 0 ) ); if ( $rating > 0 ) { $terms[] = 'rated-' . $rating; } switch ( $product->get_catalog_visibility() ) { case 'hidden': $terms[] = 'exclude-from-search'; $terms[] = 'exclude-from-catalog'; break; case 'catalog': $terms[] = 'exclude-from-search'; break; case 'search': $terms[] = 'exclude-from-catalog'; break; } if ( ! is_wp_error( wp_set_post_terms( $product->get_id(), $terms, 'product_visibility', false ) ) ) { do_action( 'woocommerce_product_set_visibility', $product->get_id(), $product->get_catalog_visibility() ); } } }