Hiển thị tất cả các điều khoản của một phân loại tùy chỉnh?


18

Tôi đã thực hiện một vài phân loại tùy chỉnh và tôi cần hiển thị TẤT CẢ các điều khoản từ nó, những gì tôi đạt được cho đến nay là hiển thị các phân loại được chọn / chọn trong một loại bài tùy chỉnh nhưng tôi cần tất cả chúng để hiển thị, dù nó có được chọn hay không . Để sau này tôi có thể tạo bộ lọc lọc theo thuật ngữ nào có giá trị loại bài đăng tùy chỉnh.

<?php 
$args=array(
  'public'   => true,
  '_builtin' => false
);
$output = 'names'; // or objects
$operator = 'and';
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    $terms = get_terms($taxonomy);
        foreach ( $terms as $term) {
?>
        <li><br><a href="#"><input type="checkbox" name="profile[]" value=""><?php echo $term->name; ?> <br/></a></li>
       <?php 
                }
              }
            }  
            ?>

Những gì tôi có cho đến nay.

Cảm ơn trước!


Tại điểm nào điều này thất bại? Bao nhiêu của nó hoạt động theo cách bạn muốn?
s_ha_dum

Vấn đề là tôi chỉ có thể hiển thị các thuật ngữ CHỌN trong một loại bài đăng tùy chỉnh. Tôi muốn tất cả trong số họ hiển thị thời tiết được chọn hay không, tôi không muốn có một loại bài đăng giả có tất cả mọi thứ được chọn chỉ để hiển thị chúng.
David H

Câu trả lời:


39

Bạn cần phải truyền một đối số bổ sung cho get_terms(). Mặc định là ẩn các thuật ngữ "trống" - các thuật ngữ được gán cho không có bài đăng.

$terms = get_terms([
    'taxonomy' => $taxonomy,
    'hide_empty' => false,
]);

Cảm ơn bạn rất nhiều! Nhưng tôi muốn hỏi điều gì đó, tại sao bạn sẽ tạo một mảng bên trong một biến thay vì khai báo nó ở trên nơi mảng đầu tiên được hiển thị?
David H

Sự đơn giản. Nếu mảng đối số phức tạp hơn, tôi sẽ khai báo nó trước (rất có thể), nhưng đối với một đối số chỉ là cách đơn giản nhất để thực hiện. Nó cũng hoạt động tốt như nhau.
s_ha_dum

Cảm ơn rất nhiều :) mà nghĩ tôi rất nhiều. Tôi rất trân trọng điều này!
David H

Làm!! Bây giờ tôi có thể thấy những gì đang xảy ra với tất cả các tùy chọn phân loại! Một số plugin tạo cấu trúc phức tạp trong đó.
eyal_katz

6

Kể từ ngày 4.5.0, các nguyên tắc phân loại phải được thông qua đối số 'phân loại' trong mảng $ args để:

$terms = get_terms( array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
) );

trong đó các điều khoản không có bài viết được ẩn theo mặc định.


3

Mã này được tìm nạp tất cả các phân loại tùy chỉnh danh mục và danh mục con bằng cách sử dụng get_terms():

<?php $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0)); 
   foreach($wcatTerms as $wcatTerm) : 
   ?>
<ul>
   <li>
      <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>
      <ul class="megaSubCat">
         <?php
            $wsubargs = array(
               'hierarchical' => 1,
               'show_option_none' => '',
               'hide_empty' => 0,
               'parent' => $wcatTerm->term_id,
               'taxonomy' => 'product_cat'
            );
            $wsubcats = get_categories($wsubargs);
            foreach ($wsubcats as $wsc):
            ?>
         <li><a href="<?php echo get_term_link( $wsc->slug, $wsc->taxonomy );?>"><?php echo $wsc->name;?></a></li>
         <?php
            endforeach;
            ?>  
      </ul>
   </li>
</ul>
<?php 
   endforeach; 
   ?>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.