Cómo ocultar un producto en WooCommerce u ocultar productos por categoría o roles

Publicado: 2020-02-24

Hay muchas formas que puede usar para ocultar un producto específico en WooCommerce y en esta publicación; exploraremos cada una de estas formas de ocultar un producto en WooCommerce. Hay varias razones por las que debería considerar ocultar un producto de la tienda WooCommerce, pero la primera de la lista es cuando el producto está agotado o cuando el producto está reservado para clientes específicos o roles de usuario.

Ocultar producto de WooCommerce

Si desea ocultar productos agotados, primero debe considerar agregar la etiqueta de agotado en el producto en lugar de ocultar el producto.

No obstante, si aún desea ocultar estos productos agotados o cualquier otro producto de WooCommerce, compartiré en esta publicación cómo puede ocultar productos por ID, nombre o categoría.

Ocultar el producto de WooCommerce usando opciones

WooCommerce por defecto viene con una excelente opción que permite a los usuarios controlar la visibilidad de un producto.

Puedes crear un producto oculto en WooCommerce controlando la opción de visibilidad antes de publicar la imagen. Para ocultar el producto en WooCommerce usando visibilidad, debe seguir los siguientes pasos:

  1. Inicie sesión en el panel de control de su sitio de WordPress
  2. Haga clic en el menú de productos como se muestra en la imagen a continuación para acceder al producto que desea ocultar a los usuarios mediante una opción de visibilidad. Cómo ocultar un producto en Woocommerce
  3. Seleccione el producto de la lista de todos los productos que desea ocultar como se muestra a continuación y haga clic en editar para acceder a la pantalla de edición del producto: Cómo ocultar un producto en Woocommerce
  4. En la pantalla de edición del producto en el lado derecho debajo del metabox de publicación a continuación, hay una opción llamada 'Visibilidad del catálogo' Haga clic en este enlace y aparecerá un menú desplegable con opciones y la última opción es Oculto.
    Cuando marque esta opción de radio y haga clic en Aceptar, luego actualice la publicación, el producto se ocultará del catálogo de la tienda. Como se ilustra en estos tres pasos (1,2,3): Cómo ocultar un producto en Woocommerce
  5. Cuando guarde esta opción y actualice la publicación, la visibilidad del producto se ocultará como puede ver en la interfaz de la tienda: Cómo ocultar un producto en Woocommerce
  6. Si marca la opción de visibilidad del catálogo en el backend de la pantalla de edición del producto, debería ver que se actualizó a oculto cuando se actualizó la publicación: Cómo ocultar productos en Woocommerce

Esta es la forma más rápida de ocultar un producto de WooCommerce del catálogo de la tienda. Hay otras formas que puede usar, como agregar código al tema secundario. Exploremos más opciones que puede usar para ocultar productos en WooCommerce.

Woocommerce Ocultar productos de categorías específicas de la página de la tienda

Si desea ocultar productos específicos de la página de la tienda en WooCommerce, puede lograrlo utilizando un gancho de acción que apunta a la consulta de la página de la tienda 'woocommerce_product_query'.

La función de devolución de llamada debe usar $tax_query para restringir los términos asociados con el producto que desea ocultar.

En este caso, la clave de términos en la matriz $tax_query es equivalente a la categoría/etiqueta como expliqué en la publicación cómo obtener la categoría actual de productos de WooCommerce.

Supongamos que queremos ocultar este producto de la categoría 'autopartes'.

ocultar producto de woocommerce

Podemos usar el siguiente fragmento de código agregado al archivo functions.php para ocultar el producto de la página de la tienda:

 /**
 * Ocultar el producto WooCommerce por categoría de la página de la tienda.
 *
 * @param $q
 */
 

add_action('woocommerce_product_query', 'njengah_hide_product_by_category_shop_page'); 

función njengah_hide_product_by_category_shop_page ($ q) {

    $consulta_impuestos = (matriz) $q->get( 'consulta_impuestos' );

    $tax_query[] = matriz(
           'taxonomía' => 'product_cat',
           'campo' => 'babosa',
           'terms' => array( 'sin categorizar','autopartes'), // No mostrar productos en la categoría 'autopartes' en la página de la tienda.
           'operador' => 'NO EN'
    );


    $q->set( 'consulta_impuesto', $consulta_impuesto );

}

Agregue este código a las funciones del tema y puede reemplazar la categoría 'autopartes' con cualquier otra categoría en la que desee ocultar productos y esto ocultará efectivamente los productos de esa categoría en la página de la tienda como se ve a continuación:

ocultar producto de woocommerce

WooCommerce Ocultar productos a menos que inicie sesión

Otra forma común de ocultar productos en WooCommerce implica la restricción de la visibilidad del producto según el estado del usuario, ya sea que haya iniciado sesión o no.

El primer paso es, obviamente, comprobar si el usuario ha iniciado sesión. Lo expliqué en detalle aquí: cómo comprobar si el usuario ha iniciado sesión en WordPress.

Vamos a usar este código para verificar el estado de inicio de sesión y luego combinarlo con la consulta para ocultar los productos de WooCommerce condicionalmente según el estado de inicio de sesión del usuario.

El código debe ser el siguiente:

 **
 * Ocultar el producto WooCommerce si el usuario no ha iniciado sesión 
 *
 * @param $consulta
 */
 

función njengah_hide_product_if_user_not_logged ($ consulta) {
	
	
    if ( $consulta->is_main_query() && is_woocommerce() && !is_user_logged_in() ) {
		
        $tax_query = matriz(
            formación(
                    'taxonomía' => 'product_cat',
                    'campo' => 'babosa',
                    'terms' => array( 'sin categorizar','autopartes'), // No mostrar productos en la categoría 'autopartes' en la página de la tienda.
                    'operador'=> 'NO EN' // excluir
                )
            );

        $consulta->set('consulta_impuesto', $consulta_impuesto);
    }
}

add_action('pre_get_posts', 'njengah_hide_product_if_user_not_logged');

Como puede ver, estamos comprobando condicionalmente si el usuario ha iniciado sesión con la función is_user_logged_in() antes de que podamos continuar con la consulta.

Woocommerce Ocultar productos por roles de usuario

También puede ocultar los productos por los roles de usuario. Primero debe obtener el usuario que ha iniciado sesión actualmente y su función de usuario, como describí en el tutorial anterior sobre cómo obtener la función de usuario actual en WordPress . Este código para obtener el rol de usuario es simplemente el siguiente:

 $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual

        $roles = (arreglo) $usuario->roles; // obteniendo el rol

        $roles[0] //rol de usuario actual

Deberíamos combinar este código con la acción pre_get_posts anterior y el código que ocultará el producto para todos los usuarios que esperan que el administrador sea el siguiente:

 /**
 * Ocultar el producto WooCommerce según el rol del usuario, como en este caso solo el administrador puede ver este producto 
 *
 * @param $consulta
 */


función njengah_hide_product_by_user_role ($ consulta) {
	
	 $usuario = wp_get_current_user(); // obteniendo y configurando el usuario actual 
	 $roles = (arreglo) $usuario->roles; // obteniendo el rol 
	
	
    if ( $consulta->is_main_query() && is_woocommerce() && $roles[0] != 'administrador' ) {
		
        $tax_query = matriz(
            formación(
                    'taxonomía' => 'product_cat',
                    'campo' => 'babosa',
                    'terms' => array( 'sin categorizar','autopartes'), // No mostrar productos en la categoría 'autopartes' en la página de la tienda.
                    'operador'=> 'NO EN' // excluir
                )
            );

        $consulta->set('consulta_impuesto', $consulta_impuesto);
    }
}

add_action('pre_get_posts', 'njengah_hide_product_by_user_role');

Como puede ver en esta línea de código donde estamos revisando condicionalmente la consulta, introduje la condición para verificar si el rol del usuario no es administrador: $roles[0] != 'administrador' y luego continuamos con la consulta. Así es como oculta los productos de WooCommerce según el rol del usuario.

Puede exponer este ejemplo para que se ajuste a sus necesidades específicas y también puede combinar todos estos casos para crear una forma condicional de ocultar los productos de WooCommerce.

Pensamientos finales

En esta publicación, hemos resaltado las tres formas comunes en que puede ocultar los productos de WooCommerce que incluyen ocultar por rol de usuario, ocultar productos a menos que el usuario haya iniciado sesión y ocultar los productos de WooCommerce sin ninguna de estas condiciones. También describimos la forma más sencilla de ocultar los productos de WooCommerce utilizando la opción de visibilidad del catálogo que se proporciona en la pantalla de edición del producto. Espero que ahora pueda implementar fácilmente cualquiera de estas soluciones para ocultar los productos WooCommerce de su tienda.