No creo que get_categories()
sea la mejor opción para usted en este caso porque devuelve una cadena con todas las categorías enumeradas como etiquetas de anclaje, bien para mostrar, pero no es excelente para averiguar en el código cuáles son las categorías . Bien, lo primero que debes hacer es agarrar el producto / postear objeto para la página actual si aún no lo tienes:
global $post;
Luego puede obtener los objetos de término de categoría de producto (las categorías) para el producto. Aquí estoy convirtiendo los objetos de término de categoría en una matriz simple llamada $categories
para que sea más fácil ver qué slugs están asignados. Tenga en cuenta que esto devolverá todas las categorías asignadas al producto, no solo la de la página actual, es decir, si estamos en /shop/audio/funzo/
:
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;
Luego solo tenemos que verificar si una categoría está en la lista:
if ( in_array( 'audio', $categories ) ) { // do something
Poniéndolo todo junto:
<?php
global $post;
$terms = wp_get_post_terms( $post->ID, 'product_cat' );
foreach ( $terms as $term ) $categories[] = $term->slug;
if ( in_array( 'audio', $categories ) ) {
echo 'In audio';
woocommerce_get_template_part( 'content', 'single-product' );
} elseif ( in_array( 'elektro', $categories ) ) {
echo 'In elektro';
woocommerce_get_template_part( 'content', 'single-product' );
} else {
echo 'some blabla';
}
Esperamos que esto sea lo que estaba buscando y responda a su pregunta.