2016-04-04 23 views
0

Her sayfa yenilemesinde wordpress sınıflandırması kategorilerini rasgele sırada görüntülemem gerekiyor. Benim kod rastgele sırayla görüntüler ancak SADECE ilk 4 kategoride getted varlık ile aşağıdakiWordpress taksonomi kategorilerini her sayfada yenilemede nasıl görüntüleyebilirsiniz

function get_terms_dropdown($taxonomies, $args){ 
          $myterms = get_terms($taxonomies, $args); 
          function shuffle_assoc($list) { 
           if (!is_array($list)) 
            return $list; 

           $keys = array_keys($list); 
           shuffle($keys); 
           $random = array(); 
           foreach ($keys as $key) { 
            $random[$key] = $list[$key]; 
           } 
           return $random; 
          } 
          $outputmain ="<ul class='services_cat'>"; 
          $output = array_slice(shuffle_assoc($myterms), 0, 11); 
          foreach($output as $term){ 
            $root_url = get_bloginfo('url'); 
            $term_taxonomy=$term->taxonomy; 
            $term_slug=$term->slug; 
            $term_name =$term->name; 
            $term_desc = $term->description; 
            $termdesc = get_field('homepage_desciption', $term); 
            $link = $root_url.'/?'.$term_taxonomy.'='.$term_slug; 
            $outputmain .="<li><a class='servicecatname'>".$term_name."</a><div class='termdesc'>".$termdesc."</div></li>"; 
          } 
          $outputmain .="</ul>"; 

        return $outputmain; 
        } 
       $taxonomies = array('services-category'); 
       $args = array('orderby' => 'rand', 'number' => '4','hide_empty'=>false); 
       echo get_terms_dropdown($taxonomies, $args); 

çalıştı, gerisi yok sayılır.

Şimdiden teşekkürler.

+0

Rasgele sırayla sipariş veriyorsunuz, sonra da artan olarak sipariş veriyorsunuz. Bunu kaldırmayı denedin mi? –

+0

Evet denedim @GavinThomas ve hayır şans –

+0

Soru kodumu güncelledim @GavinThomas. Görünüşe bakılırsa tam anlamıyla değil –

cevap

0

Bunu denemek önermek:

  1. sizin taxonomy gelen tüm şartları alın.
  2. Bu döndürülen diziyi rastgele bir şekilde shuffle() php işleviyle karıştırın.
  3. Bunu bir foreach loop içinden geçirin.
  4. Yeni bir dizi oluşturun ve ardından ilk 4 girişlerini (örneğinizde istediğiniz gibi) almak için array_slice kullanın.
bu kaba fikir gibi

:

$all = get_terms('category');  // Retrieve all the terms. 

shuffle($all);     // Shuffle that returned array randomly. 

$term_names = [];     // Create a new array. 

foreach ($all as $cat)   // Pass that through a foreach loop. 

$term_names[] = $cat->name;   // Fill the new array. 

$output = array_slice($q, 0, 5); // get the first 4 entries. 

foreach ($output as $key=>$value) // Show values ! 
    echo '<p>' . $value . '</p>'; 

ben, sizin için çalışıyor teşekkür umut!

İlgili konular