Allow hidden products in handpicked products block (https://github.com/woocommerce/woocommerce-blocks/pull/803)
* Allow hidden products in handpicked block * Simplify set_visibility_query_args
This commit is contained in:
parent
a4f82d6a90
commit
84a464fc62
|
@ -18,7 +18,7 @@ const getProductsRequests = ( { selected = [], search } ) => {
|
|||
const requests = [
|
||||
addQueryArgs( ENDPOINTS.products, {
|
||||
per_page: isLargeCatalog ? 100 : -1,
|
||||
catalog_visibility: 'visible',
|
||||
catalog_visibility: 'any',
|
||||
status: 'publish',
|
||||
search,
|
||||
} ),
|
||||
|
@ -28,7 +28,7 @@ const getProductsRequests = ( { selected = [], search } ) => {
|
|||
if ( isLargeCatalog && selected.length ) {
|
||||
requests.push(
|
||||
addQueryArgs( ENDPOINTS.products, {
|
||||
catalog_visibility: 'visible',
|
||||
catalog_visibility: 'any',
|
||||
status: 'publish',
|
||||
include: selected,
|
||||
} )
|
||||
|
|
|
@ -223,20 +223,18 @@ abstract class AbstractProductGrid extends AbstractDynamicBlock {
|
|||
$product_visibility_terms = wc_get_product_visibility_term_ids();
|
||||
$product_visibility_not_in = array( $product_visibility_terms['exclude-from-catalog'] );
|
||||
|
||||
// Hide out of stock products.
|
||||
if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
|
||||
$product_visibility_not_in[] = $product_visibility_terms['outofstock'];
|
||||
}
|
||||
|
||||
if ( ! empty( $product_visibility_not_in ) ) {
|
||||
$query_args['tax_query'][] = array(
|
||||
'taxonomy' => 'product_visibility',
|
||||
'field' => 'term_taxonomy_id',
|
||||
'terms' => $product_visibility_not_in,
|
||||
'operator' => 'NOT IN',
|
||||
);
|
||||
}
|
||||
$query_args['tax_query'][] = array(
|
||||
'taxonomy' => 'product_visibility',
|
||||
'field' => 'term_taxonomy_id',
|
||||
'terms' => $product_visibility_not_in,
|
||||
'operator' => 'NOT IN',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Works out the item limit based on rows and columns, or returns default.
|
||||
*
|
||||
|
|
|
@ -32,6 +32,23 @@ class HandpickedProducts extends AbstractProductGrid {
|
|||
$query_args['posts_per_page'] = count( $ids );
|
||||
}
|
||||
|
||||
/**
|
||||
* Set visibility query args. Handpicked products will show hidden products if chosen.
|
||||
*
|
||||
* @param array $query_args Query args.
|
||||
*/
|
||||
protected function set_visibility_query_args( &$query_args ) {
|
||||
if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) ) {
|
||||
$product_visibility_terms = wc_get_product_visibility_term_ids();
|
||||
$query_args['tax_query'][] = array(
|
||||
'taxonomy' => 'product_visibility',
|
||||
'field' => 'term_taxonomy_id',
|
||||
'terms' => array( $product_visibility_terms['outofstock'] ),
|
||||
'operator' => 'NOT IN',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get block attributes.
|
||||
*
|
||||
|
|
|
@ -288,7 +288,7 @@ class Products extends WC_REST_Products_Controller {
|
|||
$params['catalog_visibility'] = array(
|
||||
'description' => __( 'Determines if hidden or visible catalog products are shown.', 'woo-gutenberg-products-block' ),
|
||||
'type' => 'string',
|
||||
'enum' => array( 'visible', 'catalog', 'search', 'hidden' ),
|
||||
'enum' => array( 'any', 'visible', 'catalog', 'search', 'hidden' ),
|
||||
'sanitize_callback' => 'sanitize_key',
|
||||
'validate_callback' => 'rest_validate_request_arg',
|
||||
);
|
||||
|
|
Loading…
Reference in New Issue