WordPress

Niestandardowy porządek sortowania dla niestandardowej taksonomii typów postów

  • 10 lutego, 2023
  • 3 min read
Niestandardowy porządek sortowania dla niestandardowej taksonomii typów postów


mam niestandardowy typ postuWycieczki demonstracyjne

I za to CPT stworzyłem Niestandardowa taksonomiaKategorie wycieczek demonstracyjnych.

Każda wycieczka demonstracyjna może mieć jedną lub więcej kategorii. Każda kategoria ma pole niestandardowe — obraz kategorii/wideo

Na froncie zapytanie pobiera wszystkie niestandardowe wpisy taksonomii (kategorie wycieczek) wyświetlające kategorię Obraz i opis po lewej stronie oraz wycieczki demonstracyjne należące do tej kategorii po prawej stronie. Dość prosty i działa jak urok.

Problem polega na tym, że muszę kontrolować kolejność kategorii demonstracyjnych (i należących do nich tras demonstracyjnych). Teraz zamówienie odbywa się według ich identyfikatora.

Ale chcę dodać pole niestandardowe – numer zamówienia do taksonomii niestandardowej – kategorie demonstracyjne, a na froncie chcę je wyświetlić w zależności od numeru zamówienia.

Pola niestandardowe utworzone za pomocą wtyczki ACF i niestandardowe typy postów utworzone za pomocą wtyczki Pods Admin.

Naprawdę spędziłem dużo czasu w Internecie, aby znaleźć rozwiązanie, ale nic nie pasuje dokładnie do tego, czego potrzebuję.

Uważam, że problemem jest moje podejście, ale tak naprawdę nie mogę wskazać problemu.

Warto przeczytać!  Błąd krytyczny: wywołanie niezdefiniowanej funkcji wp() w ../wp-blog-header.php?

Wskaż mi drogę 🙂

Oto mój kod: (krótko)

najpierw otrzymuję warunki:

$terms = get_terms(
array(
  'taxonomy'   => 'tour_category',
  'hide_empty' => true,
)
  );

następnie zapętlam je, aby pokazać nagłówek z nazwami kategorii (jak menu)

 foreach($terms as $term) {                   
   echo ' <a class="demo_cat_link" href="#' . $term->slug . '">' . $term->name .  '<li class="demo_cat"></li></a>'; 
    }

następnie wyświetlam kategorie po lewej stronie

          $i = 0;
          foreach ($terms as $terms => $term) { 
            $i++ != 0 ? $fClass = "fade" : $fClass = "" ;
            $cat_id = $term->term_id;
            $cat_video = get_field('featured_video', $term->taxonomy . '_' . $term->term_id ); 
            $cat_order = get_field('tour_category_list_order', $term->taxonomy . '_' . $term->term_id ); 
                <div class="loop_left_section">
                  <div class="tour_cat_thumb <?=$fClass?>">
                    <video class="demo_featured" width="620" autoplay="autoplay" loop="loop" muted="">
                      <source type="video/mp4" src="<?php echo $cat_video; ?>">
                    </video>
                  </div> <? // tour_cat_thumb ?>
                  <h2><?php echo $term->name; ?></h2>
                  <p><?php echo $term->description; ?></p>
                </div> <? // loop_left_section ?>

i wycieczki demonstracyjne po prawej stronie

<div class="loop_right_section">
                  <?php                      
                    $args = array(
                      'post_type' => 'demotours',
                      'tax_query' => array(
                        array(
                            'taxonomy' => 'tour_category',
                            'field' => 'slug',
                            'terms' => $term->slug,                            
                        ),
                      ),
                    );                                
                    $loop = new WP_Query($args);
                    if($loop->have_posts()) {            
                      while($loop->have_posts()) : $loop->the_post();
                        $demo_tour_link = ( get_field('demo_tour_link', get_the_ID() ) ? get_field('demo_tour_link', get_the_ID() ) : "#" );
                        echo '<a href="'.$demo_tour_link.'" class="tour_link">
                          <div class="demo_tour_wrap">
                            <h3>' . get_the_title() . '</h3>
                            <p>'. get_the_excerpt() . '</p>
                          </div>
                          </a>';
                      endwhile;
                    }
                    ?>
                </div> <? // loop_right_section ?>    


Źródło

Warto przeczytać!  niestandardowe typy postów - System rezerwacji spotkań w WordPress