kategorie – Automatyczne dodawanie kategorii produktów do menu nawigacyjnego
umieść to w pliku functions.php, a następnie wywołaj funkcję na dowolnej stronie. Ten kod jest przygotowany do użycia css.
if (! function_exists('menu_categories')) {
function menu_categories(){
$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args ); ?>
<h1>Categories</h1><?php
foreach ($cats as $key => $cat):
if ($cat->parent == 0): ?>
<div class="tc-menuint-1">
<a href="<?php echo get_term_link($cat) ?>"><?php echo $cat->name; ?></a></li>
<div class="tc-menuint-2"><?php
foreach ($cats as $key => $cat2):
if ($cat2->parent == $cat->term_id): ?>
<div class="tc-menuint-3">
<li><a href="<?php echo get_term_link($cat2) ?>"><?php echo $cat2->name; ?></a></li>
<div class="tc-menuint-4"> <?php
foreach ($cats as $key => $cat3):
if ($cat3->parent == $cat2->term_id): ?>
<li><a href="<?php echo get_term_link($cat3) ?>"><?php echo $cat3->name; ?></a></li><?php
endif;
endforeach; ?>
</div>
</div> <?php
endif;
endforeach; ?>
</div>
</div><?php
endif;
endforeach;
}
}
Następnie możemy wywołać tę funkcję z dowolnego miejsca.
<?php menu_categories(); ?>
No i co?
Aby zrozumieć kod PHP, otrzymujemy wszystkie kategorie w następujący sposób:
$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
echo '<a href="
endforeach;
Gdy wszystkie kategorie i podkategorie są już wyświetlone, możemy zastosować filtr, aby wyświetlić tylko kategorie (najwyższy poziom):
$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
if ($cat->parent == 0):
echo '<a href="
endif;
endforeach;
Jeśli chcemy uzyskać podkategorie, możemy je ponownie filtrować:
$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
if ($cat->parent == 0):
echo '<a href="
foreach ($cats as $key => $cat2):
if ($cat2->parent == $cat->term_id):
echo '<a href=".get_term_link($cat2)." style="color:red;">'.$cat2->name.'</a><br>';
endif;
endforeach;
endif;
endforeach;
następnie jeśli chcemy pod-pod-kategorię, możemy dodać kolejny blok kodu, taki jak ten przed zmianą w tym przypadku $cat2 na przykład $cat3, i porównać go z term_id rodzica $cat2. Teraz jeśli z jakiegoś powodu potrzebujemy więcej podkategorii, możemy kontynuować i kontynuować…
$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
if ($cat->parent == 0):
echo '<a href="
foreach ($cats as $key => $cat2):
if ($cat2->parent == $cat->term_id):
echo '<a href=".get_term_link($cat2)." style="color:red;">'.$cat2->name.'</a><br>';
foreach ($cats as $key => $cat3):
if ($cat3->parent == $cat2->term_id):
echo '<a href=".get_term_link($cat3)." style="color:green;">'.$cat3->name.'</a><br>';
endif;
endforeach;
endif;
endforeach;
endif;
endforeach;