WooCommerce: detecta si la categoría actual es una subcategoría

Un cliente mío tuvo que diseñar una página de categoría de producto de WooCommerce, pero SOLO si era una subcategoría. Así que decidí agregar una clase de "subcategoría" al cuerpo HTML, para que pudieran apuntar a esto en su CSS personalizado.

Como de costumbre, PHP es bastante fácil: compruebo si la página actual es una categoría de producto, luego, si la categoría tiene "padres", y solo en este caso, agrego una clase de cuerpo. ¡Muy fácil!

WooCommerce: detecta si la página actual es una subcategoría

Fragmento de PHP 1: Agregar clase de cuerpo si la página actual es una subcategoría – WooCommerce

/**
 * @snippet       Add "Subcategory" Class to HTML Body
 * @how-to          Get CustomizeWoo.com FREE
 * @author          Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
add_filter( 'body_class', 'bbloomer_wc_product_cats_css_body_class' );
 
function bbloomer_wc_product_cats_css_body_class( $classes ){
   if ( is_tax( 'product_cat' ) ) {
      $cat = get_queried_object();
      if ( $cat->parent > 0  ) $classes[] = 'subcategory';
   }
   return $classes;
}

Fragmento de PHP 2: detecta si la página de subcategoría actual pertenece a una categoría principal específica – WooCommerce

Como puede ver dentro del primer fragmento, hay una manera de averiguar si el objeto actual (una categoría de producto en este caso) tiene un padre. Puede aplicar el mismo método para otros trabajos condicionales.

Sin embargo, en este estudio de caso, quiero verificar si la ID de la subcategoría es secundaria de una ID de categoría de producto específica, de modo que pueda ejecutar PHP solo si se cumple esta condición.

/**
 * @snippet       Check If Subcategory is Child Of Category ID
 * @how-to          Get CustomizeWoo.com FREE
 * @author          Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
$cat = get_queried_object();
if ( $cat->parent === 456  ) {
   // do something if parent term id is 456
}

Fragmento de PHP 3: detecta si la página de subcategoría actual pertenece a una categoría de antepasado específica – WooCommerce

No solo puede detectar si una subcategoría pertenece a una categoría principal, sino también abuelos, bisabuelos, etc.

/**
 * @snippet       Check If Subcategory Has Category ID Ancestor
 * @how-to          Get CustomizeWoo.com FREE
 * @author          Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
$cat_id = get_queried_object_id();
$ancestors = get_ancestors( $cat_id, 'product_cat' );
if ( in_array( 456, $ancestors ) ) {
   // do something if term id 456 is an ancestor
}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir