Hello to you all,
Firstly, I have to admit - I know nothing about PHP coding. That said, I tried to make something work, kinda failed, partly done it, but it's not the way I need it. Let me explain.
I'm working on some basic stuff on a woocommerce website. I changed the category tree of the products and now there are categories nested quite deep. Like - Parent category -> Subcategory -> Nested category -> Further nested category. That last piece wasn't showing on the sidebar, so I digged and found the PHP code responsible for showing categories. Upon finding the "Nested category" code, I simply copy-pasted it in a right place and then added CSS "display:block" rule. Now, the "Further nested category" is showing, when "Nested category" is active. But, here are the problems:
1. If there are multiple categories of that last depth for various "Nested categories", they are all showing;
2. When I click on a link of any "Further nested category", the page redirects correctly and shows all the required products, but the category tree is shrinking to "Parent categories" only.
The store url is: https://skorpion.info.pl/sklep/. The problem #1 can be seen here: https://skorpion.info.pl/kategoria/naczynia-i-przybory/naczynia-kuchenne-naczynia-i-przybory/ - as you can see, both "Garnki" and "Patelnie" nested categories show all of their consecutive further nested subcategories.
The problem number two can be seen here: https://skorpion.info.pl/kategoria/naczynia-i-przybory/naczynia-kuchenne-naczynia-i-przybory/patelnie-naczynia-kuchenne-naczynia-i-przybory/patelnie-aluminiowe/. The categories should remain visible.
Let me post the code below, I'll mark with a comment the block I copy-pasted. I really hope someone can help me here, I would be massively thankful. Cheers!
<aside class="sidebarWrapper">
<?php
$types = array(
'hendi' => 'Hendi',
'stalgast' => 'Stalgast',
'bartscher' => 'Bartscher',
'kromet' => 'Kromet',
'hiendkitchen' => 'Hiendkitchen',
); ?>
<ul class="parent-list">
<?php foreach ($types as $type => $value) : ?>
<li>
<a href="<?php echo home_url(); ?>/hurtownie/<?php echo $type; ?>"><?php echo $value; ?></a>
</li>
<?php endforeach; ?>
</ul>
<h2 class="title">
Kategorie
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 492.004 492.004" style="enable-background:new 0 0 492.004 492.004;" xml:space="preserve" width="512px" height="512px">
<g>
<g>
<g>
<path d="M382.678,226.804L163.73,7.86C158.666,2.792,151.906,0,144.698,0s-13.968,2.792-19.032,7.86l-16.124,16.12 c-10.492,10.504-10.492,27.576,0,38.064L293.398,245.9l-184.06,184.06c-5.064,5.068-7.86,11.824-7.86,19.028 c0,7.212,2.796,13.968,7.86,19.04l16.124,16.116c5.068,5.068,11.824,7.86,19.032,7.86s13.968-2.792,19.032-7.86L382.678,265 c5.076-5.084,7.864-11.872,7.848-19.088C390.542,238.668,387.754,231.884,382.678,226.804z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#F1B63E" />
</g>
</g>
</g>
</svg>
</h2>
<div class="slideDown-wrapper">
<?php
$cate = get_queried_object();
$cateID = $cate->term_id;
$cateParentID = $cate->parent;
$mainCateParentObject = get_term($cateParentID);
$mainCateParentID = $mainCateParentObject->parent;
$args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => 0,
'orderby' => 'title',
'order' => 'asc'
);
$product_cat = get_terms($args);
foreach ($product_cat as $parent_product_cat) : ?>
<ul class="parent-list">
<li class="<?php if ($parent_product_cat->term_id == $cateID || $parent_product_cat->term_id == $cateParentID || $parent_product_cat->term_id == $mainCateParentID) echo 'active'; ?>">
<a href="<?php echo get_term_link($parent_product_cat->term_id); ?>">
<?php echo $parent_product_cat->name; ?>
</a>
<?php if ($parent_product_cat->term_id == $cateID || $parent_product_cat->term_id == $cateParentID || $parent_product_cat->term_id == $mainCateParentID) : ?>
<ul class="child-list">
<?php
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $parent_product_cat->term_id
);
$child_product_cats = get_terms($child_args);
foreach ($child_product_cats as $child_product_cat) : ?>
<li class="<?php if ($child_product_cat->term_id == $cateID || $child_product_cat->term_id == $cateParentID) echo 'active'; ?>">
<a href="<?php echo get_term_link($child_product_cat->term_id); ?>">
<?php if ($child_product_cat->term_id == $cateID) echo '<strong>'; ?>
<?php echo $child_product_cat->name; ?>
<?php if ($child_product_cat->term_id == $cateID) echo '</strong>'; ?>
</a>
<ul class="child-list">
<?php
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $child_product_cat->term_id
);
$child_product_cats = get_terms($child_args);
foreach ($child_product_cats as $child_product_cat) : ?>
<li>
<a href="<?php echo get_term_link($child_product_cat->term_id); ?>">
<?php if ($child_product_cat->term_id == $cateID) echo '<strong>'; ?>
<?php echo $child_product_cat->name; ?>
<?php if ($child_product_cat->term_id == $cateID) echo '</strong>'; ?>
</a>
<!-- COPY-PASTED CODE FROM ABOVE-->
<!-- -->
<!-- -->
<ul class="child-list" id="child-4-nest">
<?php
$child_args = array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'parent' => $child_product_cat->term_id
);
$child_product_cats = get_terms($child_args);
foreach ($child_product_cats as $child_product_cat) : ?>
<li>
<a href="<?php echo get_term_link($child_product_cat->term_id); ?>">
<?php if ($child_product_cat->term_id == $cateID) echo '<strong>'; ?>
<?php echo $child_product_cat->name; ?>
<?php if ($child_product_cat->term_id == $cateID) echo '</strong>'; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<!-- END OF COPY-PASTED CODE-->
<!-- -->
<!-- -->
</li>
<?php endforeach; ?>
</ul>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</li>
</ul>
<?php endforeach; ?>
</div>
</aside>
<aside class="saleProductsWrapper container p-0">
<h2 class="title">Promocje</h2>
<div class="row">
<?php
$cate = get_queried_object();
$cateID = $cate->term_id;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$loop = new WP_Query(array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => '1',
'meta_query' => array(
array(
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
)
),
'orderby' => 'rand'
));
while ($loop->have_posts()) : $loop->the_post(); ?>
<div class="col-lg-12">
<?php get_template_part('template-parts/product'); ?>
</div>
<?php endwhile;
wp_reset_query(); ?>
</div>
</aside>