WordPress

kategorie – Automatyczne dodawanie kategorii produktów do menu nawigacyjnego

  • 12 czerwca, 2021
  • 4 min read
kategorie – Automatyczne dodawanie kategorii produktów do menu nawigacyjnego


umieść to w pliku functions.php, a następnie wywołaj funkcję na dowolnej stronie. Ten kod jest przygotowany do użycia css.

if (! function_exists('menu_categories')) {
  function menu_categories(){
    $cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
    $cats = get_terms( 'product_cat', $cat_args ); ?>
    <h1>Categories</h1><?php
    foreach ($cats as $key => $cat):
      if ($cat->parent == 0): ?>
        <div class="tc-menuint-1">
          <a href="<?php echo get_term_link($cat) ?>"><?php echo $cat->name; ?></a></li>
          <div class="tc-menuint-2"><?php
            foreach ($cats as $key => $cat2):
              if ($cat2->parent == $cat->term_id): ?>
                <div class="tc-menuint-3">
                  <li><a href="<?php echo get_term_link($cat2) ?>"><?php echo $cat2->name; ?></a></li>
                  <div class="tc-menuint-4"> <?php
                    foreach ($cats as $key => $cat3):
                      if ($cat3->parent == $cat2->term_id): ?>
                        <li><a href="<?php echo get_term_link($cat3) ?>"><?php echo $cat3->name; ?></a></li><?php
                      endif;
                    endforeach; ?>
                  </div>
                </div> <?php
              endif;
            endforeach; ?>
          </div>
        </div><?php
      endif;
    endforeach;
  }
}

Następnie możemy wywołać tę funkcję z dowolnego miejsca.

<?php menu_categories(); ?> 

No i co?

Aby zrozumieć kod PHP, otrzymujemy wszystkie kategorie w następujący sposób:

$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
  echo '<a href="
endforeach;

Gdy wszystkie kategorie i podkategorie są już wyświetlone, możemy zastosować filtr, aby wyświetlić tylko kategorie (najwyższy poziom):

$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
  if ($cat->parent == 0):
    echo '<a href="
  endif;
endforeach;

Jeśli chcemy uzyskać podkategorie, możemy je ponownie filtrować:

$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
  if ($cat->parent == 0):
    echo '<a href="

    foreach ($cats as $key => $cat2):
      if ($cat2->parent == $cat->term_id):
        echo '<a href=".get_term_link($cat2)." style="color:red;">'.$cat2->name.'</a><br>';
      endif;
    endforeach;

  endif;
endforeach;

następnie jeśli chcemy pod-pod-kategorię, możemy dodać kolejny blok kodu, taki jak ten przed zmianą w tym przypadku $cat2 na przykład $cat3, i porównać go z term_id rodzica $cat2. Teraz jeśli z jakiegoś powodu potrzebujemy więcej podkategorii, możemy kontynuować i kontynuować…

$cat_args = array( 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => true);
$cats = get_terms( 'product_cat', $cat_args );
foreach ($cats as $key => $cat):
  if ($cat->parent == 0):
    echo '<a href="
    foreach ($cats as $key => $cat2):
      if ($cat2->parent == $cat->term_id):
        echo '<a href=".get_term_link($cat2)." style="color:red;">'.$cat2->name.'</a><br>';
        
        foreach ($cats as $key => $cat3):
          if ($cat3->parent == $cat2->term_id):
            echo '<a href=".get_term_link($cat3)." style="color:green;">'.$cat3->name.'</a><br>';
          endif;
        endforeach;

      endif;
    endforeach;
  endif;
endforeach;


Źródło

Warto przeczytać!  Jak przetłumaczyć wtyczkę WordPress na swój język