แสดงอนุกรมวิธานที่กำหนดเองทั้งหมดหรือไม่


18

ฉันสร้าง taxonomies แบบกำหนดเองสองสามตัวและฉันต้องการแสดงเงื่อนไขทั้งหมดจากสิ่งที่ฉันได้รับจนถึงขณะนี้คือการแสดง taxonomies ที่เลือก / เลือกในประเภทโพสต์ที่กำหนดเอง แต่ฉันต้องการให้แสดงทั้งหมดไม่ว่าจะเลือกหรือไม่ . เพื่อที่ในภายหลังฉันสามารถสร้างตัวกรองที่กรองตามเงื่อนไขที่มีค่าประเภทโพสต์ที่กำหนดเองได้

<?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 
                }
              }
            }  
            ?>

สิ่งที่ฉันมีจนถึงตอนนี้

ขอบคุณล่วงหน้า!


จุดนี้ล้มเหลวในจุดใด วิธีการทำงานเท่าไหร่ที่คุณต้องการ?
s_ha_dum

มันใช้งานได้ปัญหาคือฉันสามารถแสดงเฉพาะคำที่เลือกในประเภทโพสต์ที่กำหนดเอง ฉันต้องการให้พวกเขาทั้งหมดเลือกแสดงหรือไม่ฉันไม่ต้องการให้มีประเภทโพสต์หลอกตาที่มีทุกสิ่งที่เลือกไว้เพียงเพื่อแสดงให้พวกเขาเห็น
David H

คำตอบ:


39

get_terms()คุณต้องผ่านอาร์กิวเมนต์เพิ่มเติมเพื่อ ค่าเริ่มต้นคือการซ่อนคำว่า "ว่างเปล่า" - คำที่ถูกกำหนดให้ไม่มีการโพสต์

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

ขอบคุณมาก! แต่ฉันต้องการถามอะไรทำไมคุณต้องสร้างอาเรย์ภายในตัวแปรแทนการประกาศข้างต้นซึ่งมีการแสดงอาเรย์แรก?
David H

ความง่าย ถ้าอาร์กิวเมนต์มีความซับซ้อนมากขึ้นฉันจะประกาศก่อน (เป็นไปได้มากที่สุด) แต่สำหรับอาร์กิวเมนต์เดี่ยวที่เป็นวิธีที่ตรงไปตรงมาที่สุดในการทำ ควรทำงานอย่างเท่าเทียมกันทั้งสองวิธี
s_ha_dum

ขอบคุณมาก :) ที่คิดว่าฉันมาก ฉันซาบซึ้งจริงๆ!
David H

ธิ !! ตอนนี้ฉันสามารถเห็นสิ่งที่เกิดขึ้นกับตัวเลือกอนุกรมวิธานทั้งหมด! ปลั๊กอินบางตัวสร้างโครงสร้างที่ซับซ้อนในนั้น
eyal_katz

6

ตั้งแต่ 4.5.0, taxonomies ควรถูกส่งผ่านอาร์กิวเมนต์ 'taxonomy' ในอาร์เรย์ $ args ดังนั้น:

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

โดยที่คำที่ไม่มีการโพสต์ถูกซ่อนไว้โดยค่าเริ่มต้น


3

รหัสนี้จะดึงข้อมูล taxonomies แบบกำหนดเองของหมวดหมู่และหมวดย่อยทั้งหมดโดยใช้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; 
   ?>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.