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:
Mike Jolley 2019-08-12 12:54:51 +01:00 committed by GitHub
parent a4f82d6a90
commit 84a464fc62
4 changed files with 27 additions and 12 deletions

View File

@ -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,
} )

View File

@ -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.
*

View File

@ -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.
*

View File

@ -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',
);