Hiện danh mục con khi vào danh mục cha trong WordPress

Khi làm việc với web Wordpress, chắc hẳn Bạn sẽ không ít lần gặp khách hàng có yêu cầu chỉ hiển thị danh mục con khi vào danh mục cha

Hiện danh mục con khi vào danh mục cha trong WordPress
5 (100%) 3 votes
Hiện danh mục con khi vào danh mục cha trong WordPress

Khi làm việc với web WordPress, chắc hẳn Bạn sẽ không ít lần gặp khách hàng có yêu cầu chỉ hiển thị danh mục con khi vào danh mục cha. Nếu Bạn chưa có hướng giải quyết cho vấn đề này thì có thể tham khảo bài viết này của Mình

Hiện danh mục con khi vào danh mục cha trong WordPress

Hiện danh mục con khi vào danh mục cha trong WordPress:
Tìm đến File category.php (file hiển thị danh mục của WordPress):
– Đầu tiên bạn cần lấy thông tin của danh mục hiện tại

<?php 
$vnkings_cat_id = get_cat_id( single_cat_title("",false) );
// Lấy id của Danh mục hiện tại
?>

– Tiếp theo bạn dùng vòng lặp lấy ra Danh mục con

<?php 
$categories = get_categories(
array('child_of' => $vnkings_cat_id,'hide_empty' => 0,'orderby' => 'id', 'order' => 'ASC',)); 
if(!empty($categories)){ ?>
	<ul>
		<?php foreach($categories as $cat){
		if('Uncategorized' != $cat->name){ ?>
			<li><a  href="<?php echo get_category_link($cat->term_id); ?>"  ><?php echo $cat->name; ?></a></li>
		<?php } } ?>  	
	</ul>
<?php } else { ?>
	<ul>
		<li class="cat"><a href="<?php echo get_category_link($vnkings_cat_id); ?>"><?php echo get_cat_name($vnkings_cat_id); ?></a></li>
	</ul>
<?php } ?>

Giải thích :

  • get_categories(array(…)) : Lấy toàn bộ Danh mục con có danh mục cha ID là $vnkings_cat_id
  • if(!empty($categories)){} : Nếu có danh mục con thì hiển thị toàn bộ danh mục con này
  • else{} : Nếu Danh mục hiện tại không có Danh mục con, thì hiện ra danh mục hiện tại

Vậy ta có 1 đoạn Code hoàn chỉnh :

<?php 
$vnkings_cat_id = get_cat_id( single_cat_title("",false) );
$categories = get_categories(
array('child_of' => $vnkings_cat_id,'hide_empty' => 0,'orderby' => 'id', 'order' => 'ASC',)); 
if(!empty($categories)){ ?>
	<ul>
		<?php foreach($categories as $cat){
		if('Uncategorized' != $cat->name){ ?>
			<li><a  href="<?php echo get_category_link($cat->term_id); ?>"  ><?php echo $cat->name; ?></a></li>
		<?php } } ?>  	
	</ul>
<?php } else { ?>
	<ul>
		<li class="cat"><a href="<?php echo get_category_link($vnkings_cat_id); ?>"><?php echo get_cat_name($vnkings_cat_id); ?></a></li>
	</ul>
<?php } ?>

Như vậy chỉ với vài dòng code đơn giản bạn đã giải quyết được vấn đề này.

Chúc các bạn thành công!

Bài liên quan

    • Đầu tiên bạn cũng lấy id của term cha:

      $vnkings_id = get_queried_object()->term_id;
      

      Sau đó bạn có thể dùng thế này để lấy danh mục con

      <?php
      $term_id = $vnkings_id; // id của term cha vừa tìm 
      $taxonomy_name = 'products'; // post type của bạn, ví dụ products
      $termchildren = get_term_children( $term_id, $taxonomy_name );
      
      echo '<ul>';
      foreach ( $termchildren as $child ) {
      	$term = get_term_by( 'id', $child, $taxonomy_name );
      	echo '<li><a href="' . get_term_link( $child, $taxonomy_name ) . '">' . $term->name . '</a></li>';
      }
      echo '</ul>';
      ?> 
      
  1. Bài viết quá hay. Đã phần nào xử lý được vấn đề của mình. Cảm ơn Love Nd nhiều nhiều nhé 😀

      • Mình có thêm nếm một chút nữa nhưng về cơ bản là đã giải quyết được vấn đề mà mình mất cả ngày nay ngồi mò mẫm hết trang này trang khác mà ko xử lý được. Hi rất mong bạn tiếp tục ra những bài mới để mình và mọi người theo dõi nhé ^^

  2. xin cho hỏi là nếu có nhiều danh mục con mà muốn chia làm 2 cột thì có được ko? nếu được thì làm thế nào vậy ạ?

    • Hoàn toàn được bạn ạ, phần css bạn chỉ cần đặt thuộc tính và giá trị cho thẻ li là {display:inline-block;float:left;width:50%}

  3. có thể nào custom được sidebar theo category không bạn. tức là xem bài viết ở chuyên mục A thì sidebar sẽ hiển thị theo như mình custom dành cho chuyên mục A. xem bài viết ở chuyên mục B thì sidebar khác ấy

Bình luận bài viết

Bạn có thể dùng các thẻ HTML này:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

X

Tạo live chat facebook cho website

Bạn cần tư vấn ?