php - blog - wordpress get title post
PHP/Wordpress-agrega atributo a la categorÃa actual en la lista desordenada (1)
Estoy usando el complemento del carrito de compras de WooCommerce y he escrito mi propio tema con anulaciones de archivos para las plantillas predeterminadas de WooCommerce, para tener más control. Así que creé una barra lateral desde cero que enumera todas las categorías de productos. Funciona genial:
<ul class="sidebar-list">
<?php
$all_categories = get_categories( ''taxonomy=product_cat&hide_empty=0&hierarchical=1'' );
foreach ($all_categories as $cat) {
echo ''<li><a href="''. get_term_link($cat->slug, ''product_cat'') .''"><span>''. $cat->name .''</span></a>'';
}
?>
</ul>
Pero , el bucle foreach
anterior no genera ningún tipo de atributo de "categoría actual" (como una clase en el elemento de la lista). Así que he intentado escribir un PHP que capture la categoría actual del producto y lo compare dentro del ciclo foreach con la categoría que se muestra y, si coinciden, agregue una clase "actual" al elemento de la lista.
<ul class="sidebar-list">
<?php
$all_categories = get_categories( ''taxonomy=product_cat&hide_empty=0&hierarchical=1'' );
$terms = get_the_terms( $post->ID, ''product_cat'' );
foreach ($terms as $term) {
$product_cat = $term->term_id;
break;
}
foreach ($all_categories as $cat) {
echo ''<li class="'';
if ( $product_cat == $cat->id ) {
echo "current";
}
echo ''"><a href="''. get_term_link($cat->slug, ''product_cat'') .''"><span>''. $cat->name .''</span></a>'';
}
?>
</ul>
Como pueden deducir de mí publicando esto aquí, no funciona.
Sé que tengo un problema porque ni siquiera soy capaz de tomar el $cat->id
, porque si me hago eco por mi cuenta no consigo nada. Parece que todo lo que tengo acceso es el $cat->name
$cat->slug
y $cat->slug
.
Y además de eso, estoy seguro de que mi lógica también es defectuosa. ¿Puede alguien hacer que me dirija en la dirección correcta aquí?
¡Gracias, gracias, gracias!
Puedes usar wp_list_categories
:
Agrega la clase CSS current-cat
a la categoría activa solo en las páginas de archivo / categoría:
<?php
$args = array(
''taxonomy'' => ''product_cat'',
''hide_empty'' => 0,
''hierarchical'' => 1
);
wp_list_categories($args);
?>
Agrega la clase CSS current-cat
a la categoría activa en todas las páginas donde get_the_category()
devuelve un resultado:
<?php
$category = get_the_category();
$current_category_ID = isset($category->cat_ID) ? $category->cat_ID : 0;
$args = array(
''taxonomy'' => ''product_cat'',
''hide_empty'' => 0,
''hierarchical'' => 1,
''current_category'' => $current_category_ID
);
wp_list_categories($args);
?>