Jump to content

Sidebar menu not showing 4th subcategories


zygwak

Recommended Posts

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>

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.