2012-10-15 2 views
-1

wordpress Tag CLoud Plugin에 문제가 있습니다.wordpress random tag issue

임의의 태그를 표시하고 싶지만이 작업을 수행하는 방법이 혼란 스럽습니다.

코드는 다음과 같습니다.

임의의 태그를 표시하고 싶습니다. 마치 5 개의 태그 만 표시하도록 선택한 경우 화면을 다시 볼 때마다 태그가 임의로 표시되어야합니다. 코드에

function widget_tagcloud($args){ 
    $option_value = retrieve_options($opt_val); 
    extract($args); 
    echo $before_widget; 
    echo $before_title; 
    echo $option_value['title']; 
    echo $after_title; 
    global $wpdb; 

    $tags_list = get_terms('post_tag', array(
      'orderby'  => 'count', 
      'hide_empty' => 0 
      )); 

    if(sizeof($tags_list)!=0){ 
     $max_count = 0; 
       if(!empty($option_value['height'])) $canvas_height = $option_value['height']; 
       else $canvas_height = "250"; 
       if(!empty($option_value['width'])) $canvas_width = $option_value['width']; 
     else $canvas_width = "250"; 
     foreach($tags_list as $tag) if($tag->count > $max_count) $max_count = $tag->count;?> 
     <div id="myCanvasContainer"> 
        <canvas width="<?php echo $canvas_width;?>" height="<?php echo $canvas_height;?>" id="myCanvas"> 
        <p>Tags</p> 
        </canvas> 
       </div> 
       <div id="tags"> 

     <ul style=" 
     font-family: <?php if(!empty($option_value['font_name'])) echo $option_value['font_name']; 
      else echo "Calibri";?>; 
     height: 
     <?php 
      if(!empty($option_value['height'])) echo $option_value['height']; 
      else echo "250"; 
     ?>px; 
     width: 
     <?php 
      if(!empty($option_value['width'])) echo $option_value['width']; 
      else echo "250"; 
     ?>px; 
     background-color: #<?php if(!empty($option_value['bg_color'])) echo $option_value['bg_color']; 
      else echo "FFF";?>; 
     "> 
     <?php 
     if(empty($option_value['no_of_tags'])) $option_value['no_of_tags'] = 15; 
     if(empty($option_value['txt_color'])) $option_value['txt_color'] = "000"; 
     if(empty($option_value['max_font_size'])) $option_value['max_font_size'] = 40; 
     if(empty($option_value['min_font_size'])) $option_value['max_font_size'] = 3; 
     $i=1; 
     foreach($tags_list as $tag){ 
      if($i <= $option_value['no_of_tags']){ 
       $font_size = $option_value['max_font_size'] - (($max_count - $tag->count)*2); 
       if($font_size < $option_value['min_font_size']) $font_size = $option_value['min_font_size']; 
        echo '<li><a href="'.$_SERVER['PHP_SELF'].'?tag='.$tag->slug.'" 
                style="font-size:'.$font_size.'px;color: #'.$option_value['txt_color'].';">' 
                .$tag->name.'</a></li>'; 
       $i++; 
       } 
      } 
      echo '</ul></div>'; 
     } 
    else echo "No tags found"; 
    echo $after_widget; 
} 

답변

0

Accordind : (특히이 부분)

$tags_list = get_terms('post_tag', array(
     'orderby'  => 'count', 
     'hide_empty' => 0 
     )); 

는 당신이 count에 의해 정렬 얻을 tags을 따라서 - 그들은 무작위로 고른되지 않습니다.

당신은 시도하고 다음 코드를 사용할 수 있습니다

$tags_list = get_terms('post_tag', array(
     'number'  => 5, 
     'orderby'  => 'none', 
     'hide_empty' => 0 
     )); 

을 그리고 문제가 해결되지 않을 경우, mysqlRAND 기능을 사용하여 사용자 정의 쿼리를 작성.

편집 코드 : 코드를 기반으로하면 shuffle() PHP 함수를 사용하면 더 쉽게 할 수 있습니다.

$max_count = 5; 
shuffle($tags_list); 
+0

는 u는 내가 RAND를 사용하여 만든 어떤 쿼리 내게 줄 수 있으며, 위의 사용자 정의한가 – Muzzy

+0

작동하지 않기 때문에 내가 그것을 사용하는 방법의 코드를 사용해보십시오 :

$max_count = 0; 

으로 :

그냥 교체 내 대답의'편집 '부분. –

+0

이 오류가 발생하고 있습니다 .. 경고 : foreach()에 잘못된 인수가 – Muzzy