Ich habe diesen Code, der alle Kategorien und Unterkategorien von einer Woocommerce-basierten Website in einer hierarchischen Reihenfolge abruft, und er funktioniert, aber jedes Mal, wenn ich eine neue Tiefe hinzufügen möchte
category
->sub-cat
->sub-sub-cat
->sub-sub-sub-cat
->etc
Ich muss eine weitere foreach-Schleife innerhalb der letzten Schleife hinzufügen (ich bin mir nicht einmal sicher, ob Sie mich verstehen können, weil ich ehrlich gesagt nicht einmal weiß, wie ich das erklären soll – Entschuldigung, bitte haben Sie etwas Geduld, es ist mein zweiter Monat PHPs ‘Felder’)
Also versuche ich, all diese foreach-Schleifen loszuwerden (um es dynamischer zu machen) und ich habe gehört, dass es eine Möglichkeit gibt, dies zu tun, indem man etwas namens Rekursion verwendet, die Art von Zeug, mit dem ich dies erreichen kann . Ich verstehe nicht wirklich, wie das funktioniert, und ich habe den ganzen Tag darüber gelesen, also wenn es jemanden gibt, der mir helfen kann, zu verstehen, wie ich das hinbekomme, würde ich mich freuen?
Hier ist mein Code, ein Teil davon stammt von StackOverflow.
<ul>
<?php
$taxonomy = 'product_cat';
$orderby = 'name';
$hierarchical = 1;
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'hierarchical' => $hierarchical
);
$cat = get_categories( $args );
foreach ($cat as $c) {
if($c->category_parent == 0) {
$catID = $c->term_id;
echo '<li><a href="'.%20get_term_link($c->slug,%20'product_cat')%20.'">'. $c->name .'</a>';
$args = array(
'taxonomy' => $taxonomy,
'parent' => $catID,
'orderby' => $orderby,
'hierarchical' => $hierarchical
);
$cat = get_categories( $args );
if($cat) {
echo '<ul>';
foreach($cat as $c) {
$catID = $c->term_id;
echo '<li><a href="'.%20get_term_link($c->slug,%20'product_cat')%20.'">'. $c->name , apply_filters( 'woocommerce_subcategory_count_html', ' (' . $c->count . ')', $category ) .'</a>';
$args = array(
'taxonomy' => $taxonomy,
'parent' => $catID,
'orderby' => $orderby,
'hierarchical' => $hierarchical
);
$cat = get_categories( $args );
if($cat){
echo '<ul>';
foreach ($cat as $c) {
$catID = $c->term_id;
echo '<li><a href="'.%20get_term_link($c->slug,%20'product_cat')%20.'">'. $c->name , apply_filters( 'woocommerce_subcategory_count_html', ' (' . $c->count . ')', $category ) .'</a>';
$args = array(
'taxonomy' => $taxonomy,
'parent' => $catID,
'orderby' => $orderby,
'hierarchical' => $hierarchical
);
$cat = get_categories( $args );
if($cat){
echo '<ul>';
foreach ($cat as $c) {
$catID = $c->term_id;
echo '<li><a href="'.%20get_term_link($c->slug,%20'product_cat')%20.'">'. $c->name , apply_filters( 'woocommerce_subcategory_count_html', ' (' . $c->count . ')', $category ) .'</a></li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
}
?>
Es funktioniert perfekt, obwohl mir bewusst ist, dass es nicht zu schlau ist, also seid bitte nicht zu hart zu mir.
WordPress bietet auch eine Funktion, die dies tun kann, also können Sie hier sehen, ob es für Sie funktioniert: developer.wordpress.org/reference/functions/walk_category_tree
– jawrks
9. November 2017 um 17:46 Uhr