Witajcie,
Nie za bardzo potrafię programować w PHP, generalnie wszystko co robię to edycja gotowych elementów z formów/ sieci etc.
Mam taki skrypcik, który po wybraniu kategorii w sklepie na sidebarze odpala jego podkategorie.
Wszystko działa praktycznie idealnie poza jednym mankamentem. Po wejściu w podkategorię nie wyświetla już nic - a w tym miejscu chciałbym wyświetlać dalej te same podkategorie w obrębie kategorii rodzica.
np. wygląda to tak
wchodzę w [kategoria 1]
w sidebarze wyświetla mi się:
[kategoria 1]
- [podkategoria 1]
- [podkategoria 2]
- [podkategoria 3]
po wejściu w którąś z podkategorii chciałbym aby wyświetlało mi się
[kategoria 1]
- [podkategoria 1]
- [podkategoria 2]
- [podkategoria 3]
tak aby użytkownik miał pod ręką pozostałe podkategorie.
a teraz najważniejszy element układanki, czyli to co już mam:
<?php single_cat_title('', false); http://www.php.net/echo '<b>'; http://www.php.net/echo single_cat_title('', false); http://www.php.net/echo '</b>'; http://www.php.net/echo '<div class="fusion-separator fusion-full-width-sep sep-double sep-solid" style="border-color:#e0dede;border-top-width:1px;border-bottom-width:1px;margin-left: auto;margin-right: auto;margin-top:10px;margin-bottom:10px;"></div>'; $queried_object = get_queried_object(); $parent = $queried_object->term_id; $categories = get_term_children( $parent, 'product_cat' ); if ( $categories && ! is_wp_error( $category ) ) : http://www.php.net/echo '<p class="subcattitle">PODKATEGORIE:</p>'; http://www.php.net/echo '<ul>'; foreach($categories as $category) : $term = get_term( $category, 'product_cat' ); http://www.php.net/echo '<li class="subcatmenu">'; http://www.php.net/echo '<span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>'; http://www.php.net/echo '<a href="'.get_term_link($term).'">'; http://www.php.net/echo $term->name; http://www.php.net/echo '</a></span>'; http://www.php.net/echo '</li>'; endforeach; http://www.php.net/echo '</ul>'; http://www.php.net/echo '<div class="fusion-separator fusion-full-width-sep sep-double sep-solid" style="border-color:#e0dede;border-top-width:1px;border-bottom-width:1px;margin-left: auto;margin-right: auto;margin-top:10px;margin-bottom:10px;"></div>'; endif; ?>
W pasku adresu powinieneś mieć przyjazny link wordpresowy bądź jakiś inny uwzględniający id. Robisz sobie menu przez foreach i <li> więc dla wystąpienia, które pokrywa się z danymi wcześniej uzyskanymi, wyBOLDuj go. W dobrym tonie jest to robić prze z CSS (font-weight: bold;), ale w zależności od potrzeb, stosuje się w html, zwykły znacznik <b></b>. W wordpress możesz też mieć gotowy odpowiedni shortcode.
Tu nie chodziło o to boldowanie ;-)
chodziło o to, ze po wejściu w podkategorie skrypt nie wypluwa nic, a chciałbym żeby wydrukował mi to samo co w widoku kategorii, tj tą samą nawigację co na poziomie rodzica.
Czy masz może ten projekt na GIT-cie, by sobie sklonować i sprawdzić? Dobrze, by była również baza danych. Póki co, za mało informacji, by coś więcej powiedzieć/doradzić, przynajmniej dla mnie.
W linii 14 pobierane jest drzewo kategorii dla wybranego (aktualnego) obiektu.
Musisz zawsze dostarczać $parent o wartości obiektu najwyższego w hierarchii. Być może jest to 0.
Dzięki panowie za porady, chyba będę musiał to zlecić komuś bo sam tego nie ogarnę :-)
A próbowałeś tak jak pisałem?
$categories = get_term_children( 0, 'product_cat' );
Tak, próbowałem, ale to nie działa...
Znalazłem nowy skrypt.
<?php $term = get_queried_object()->term_id; $termid = get_term($term, 'product_cat' ); if($termid->parent > 0) { $args = http://www.php.net/array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, 'child_of' => $termid->parent, ); $siblingproducts = get_terms( 'product_cat', $args); foreach ($siblingproducts as $siblingproduct) { if ($siblingproduct->term_id == $term ) { http://www.php.net/echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>'; } else { http://www.php.net/echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>'; } http://www.php.net/echo '<a href="'; http://www.php.net/echo get_term_link( $siblingproduct ); http://www.php.net/echo '">'; http://www.php.net/echo $siblingproduct->name; http://www.php.net/echo '</a></span></li>'; } } else { $args = http://www.php.net/array( 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, 'parent' => $term ); $subproducts = get_terms( 'product_cat', $args); foreach ($subproducts as $subproduct) { http://www.php.net/echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span><a href="'.get_term_link( $subproduct ).'">'; http://www.php.net/echo $subproduct->name; http://www.php.net/echo '</a></span></li>'; } } ?>
To może tak lub coś w tym style, sprawdź po prostu czy dzieci są wyświetlane z klikniętego PARENTa
$subproducts = get_terms( 'product_cat', $args); foreach ($subproducts as $subproduct) { if ($subproduct->parent == $term ) { http://www.php.net/echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span><a href="'.get_term_link( $subproduct ).'">'; http://www.php.net/echo $subproduct->name; http://www.php.net/echo '</a></span></li>'; } }
if ($siblingproduct->term_id == $term ) { http://www.php.net/echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>'; } else { http://www.php.net/echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>'; }
ja totalnie improwizuje z php, niestety to się nie udało...
a to nie powinno być tak, że:
jeśli dziecko ma wnuki -> wyświetl tylko wnuki tego dziecka z pominięciem wnuków innych dzieci
jeśli dziecko nie ma wnuków -> wyświetl tylko rodzeństwo tego dziecka (bez rodziców)
Klikam 1.1 Dziecko (Dziecko które nie ma już wnuków)
Wyświetla:
1.1 Dziecko
1.2 Dziecko
1.3 Dziecko
1.3.1 Wnuk - tego nie powinno
1.3.2 Wnuk - tego nie powinno
Klikam 1.3 Dziecko (Dziecko, które ma wnuki)
Wyświetla:
1.1 Dziecko - tego nie powinno
1.2 Dziecko - tego nie powinno
1.3 Dziecko - tego nie powinno
1.3.1 Wnuk
1.3.2 Wnuk
https://pasteboard.co/HlatZfm.png
tak to wygląda teraz
,
Kto ma ochotę podjąć się zadania i na ile wycenia swoją pracę
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)