WC_Product_Data_Store_CPT::update_visibility( WC_Product $product, bool $force = false )
Update visibility terms based on props.
Description Description
Parameters Parameters
- $product
-
(Required) Product object.
- $force
-
(Optional) Force update. Used during create.
Default value: false
Source Source
File: includes/data-stores/class-wc-product-data-store-cpt.php
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, 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() );
}
}
}
Changelog Changelog
| Version | Description |
|---|---|
| 3.0.0 | Introduced. |