0

ワードプレスのタグクラウドプラグインに問題があります。

ランダムなタグを表示したいのですが、これを行う方法がわかりません。

コードを以下に示します。

ランダムなタグを表示したい。たとえば、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;
}
4

1 に答える 1

0

あなたのコードによると:(特にこの部分)

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

あなたtagsが得るものはによって注文されますcount、したがって-それらはランダムに選ばれません。

次のコードを試して使用できます。

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

それでも問題が解決しない場合は、のRAND関数を使用してカスタマイズされたクエリを作成しますmysql

編集:コードに基づいて、shuffle()php関数を使用することでさらに簡単に行うことができます。

交換するだけです:

$max_count = 0;

と:

$max_count = 5;
shuffle($tags_list);
于 2012-10-15T14:01:22.503 に答える