Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wordpress/woocommerce - wyświetlanie podkategorii sklepu
Abumbaraj
post 23.04.2018, 15:16:36
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.04.2018

Ostrzeżenie: (0%)
-----


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:

  1. <?php
  2.  
  3. single_cat_title('', false);
  4. echo '<b>';
  5. echo single_cat_title('', false);
  6. echo '</b>';
  7.  
  8. 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>';
  9.  
  10.  
  11.  
  12. $queried_object = get_queried_object();
  13. $parent = $queried_object->term_id;
  14. $categories = get_term_children( $parent, 'product_cat' );
  15. if ( $categories && ! is_wp_error( $category ) ) :
  16. echo '<p class="subcattitle">PODKATEGORIE:</p>';
  17. echo '<ul>';
  18.  
  19. foreach($categories as $category) :
  20.  
  21. $term = get_term( $category, 'product_cat' );
  22. echo '<li class="subcatmenu">';
  23. echo '<span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>';
  24. echo '<a href="'.get_term_link($term).'">';
  25. echo $term->name;
  26. echo '</a></span>';
  27. echo '</li>';
  28.  
  29. endforeach;
  30.  
  31. echo '</ul>';
  32.  
  33. 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>';
  34.  
  35. endif;
  36.  
  37. ?>


Jest tu jakaś dobra dusza, która pomoże mi rozwiązać problem? ohno-smiley.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Abumbaraj
post 8.05.2018, 22:34:27
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 23.04.2018

Ostrzeżenie: (0%)
-----


Tak, próbowałem, ale to nie działa...


Znalazłem nowy skrypt.


  1. <?php
  2. $term = get_queried_object()->term_id;
  3. $termid = get_term($term, 'product_cat' );
  4. if($termid->parent > 0)
  5. {
  6. $args = array(
  7. 'orderby' => 'name',
  8. 'order' => 'ASC',
  9. 'hide_empty' => false,
  10. 'child_of' => $termid->parent,
  11. );
  12. $siblingproducts = get_terms( 'product_cat', $args);
  13. foreach ($siblingproducts as $siblingproduct) {
  14.  
  15. if ($siblingproduct->term_id == $term ) {
  16. echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>';
  17. }
  18.  
  19. else {
  20. echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span>';
  21. }
  22.  
  23. echo '<a href="';
  24. echo get_term_link( $siblingproduct );
  25. echo '">';
  26. echo $siblingproduct->name;
  27. echo '</a></span></li>';
  28. }
  29. }
  30.  
  31. else {
  32. $args = array(
  33. 'orderby' => 'name',
  34. 'order' => 'ASC',
  35. 'hide_empty' => false,
  36. 'parent' => $term
  37. );
  38. $subproducts = get_terms( 'product_cat', $args);
  39. foreach ($subproducts as $subproduct) {
  40. echo '<li class="subcatmenu"><span class="subcatlinkmenu"><span class="fusion-megamenu-bullet"></span><a href="'.get_term_link( $subproduct ).'">';
  41. echo $subproduct->name;
  42. echo '</a></span></li>';
  43. }
  44. }
  45. ?>




Ten już jest na prawdę bliski temu co chciałbym osiągnąć.
Jedyne co mu "dolega" to to co pokazuje na poniższym przykładzie.


np. struktura menu wygląda mniej wiecej tak


1. Rodzic
1.1 Dziecko
1.2 Dziecko
1.3 Dziecko
1.3.1 Wnuk
1.3.2 Wnuk
2. Rodzic
2.1 Dziecko
2.2 Dziecko
2.3 Dziecko
2.3.1 Wnuk
2.3.2 Wnuk


Działa to na ten moment tak:

Klikam 1. Rodzic - tutaj jest ok
Wyświetla:
1.1 Dziecko
1.2 Dziecko
1.3 Dziecko

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

Klikam 1.3.1 Wnuk - i tutaj jest ok
Wyświetla:
1.3.1 Wnuk
1.3.2 Wnuk


hop hop, jest tu kto ? smile.gif
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 22:35