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!

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