1

次のコードを使用して、ランダムなタグのリストを表示しようとしました:

<?php wp_tag_cloud('smallest=10&largest=10&number=5&format=list&order=rand&orderby=count'); ?>

これは 5 つのタグのリストを表示しますが、順序はランダムではなく、ページをリロードしても変わりません。

これを達成する方法の助けはありますか?

どうもありがとう。

4

1 に答える 1

5

私は今夜​​、これに対する答えを自分で探していたので、解決策を投稿すると思いました。

私の要件は、ページが更新されるたびに表示されるランダムなタグと、特定のタグを除外する機能でした。テンプレートファイルが関数でごちゃごちゃになるのが嫌なので、関数を functions.php に入れました。

関数- これを functions.php ファイルに挿入します

function jr_get_tags_but_exclude() {
    $args = array('exclude' => '36 17'); // see notes below
        $alltags = get_tags( $args );
        shuffle($alltags);
        $count=0;
        if ($alltags) {
            foreach($alltags as $tag) {
                $count++;
                echo '<a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a>';
        if( $count >19 ) break;
        }
    }
}

The Call - これをテンプレート ページに挿入します

<?php jr_get_tags_but_exclude(); ?>

ノート

  • タグを除外するには、タグ ID が必要です。ID を取得する最も簡単な方法は、[投稿] -> [タグ] に移動し、除外するタグにカーソルを合わせることです。&tag_ID=9ID # は、たとえばにカーソルを合わせると、ブラウザの下部にある URL バーに表示されます。

  • Wordpress codex forget_tagsでは、各タグ ID を区切る空白スペースのみを配置するように指示されており、コンマは必要ありません。

  • 結果のランダム化に関しては、 残念ながらrand、 は利用可能なオプションではありません。$argget_tags

  • 表示されるタグの数を変更するには、if ( $count >19 )19 = 20 タグ、29 = 30 などに調整します。

  • shuffle($alltags);ランダム化を行うものです

  • $count=0;カウンターを開始し、$count++;投稿された各タグをカウントif( $count >19 ) break;し、ループを終了します。この場合、20 個のタグが投稿された後です。

クレジットと参照

主にこれらの紳士のソリューションに基づいています

  1. wordpressのランダムタグの問題

  2. https://wordpress.stackexchange.com/questions/26112/how-to-limit-and-display-tag

  3. http://wordpress.org/support/topic/php-exclude-tag

get_tags の wordpress コーデックス

http://codex.wordpress.org/Function_Reference/get_tags

テンプレート ファイル内- 関数は必要ありません

<?php
    $args = array('exclude' => '36 17'); // see notes below
        $alltags = get_tags( $args );
        shuffle($alltags);
        $count=0;
        if ($alltags) {
            foreach($alltags as $tag) {
                $count++;
                echo '<a href="'.get_tag_link($tag->term_id).'">'.$tag->name.'</a>';
        if( $count >19 ) break;
        }
    }
?>

編集できるように、間違いに気付いた場合は返信してください。

于 2014-03-11T10:53:09.207 に答える