サポート » 使い方全般 » カスタムフィールドの配列から取得した値をランダムに表示したい

  • 解決済 developer

    (@6flat)


    特定の投稿に作ったカスタムフィールドのキーに予めいくつかの値を入れて、現在下記コードを用いて任意の箇所に表示しているのですが、この値の表示をランダムにしたいです。

    <?php
    $limit = 5; // 表示させる数の上限を指定
    $post_id = 10; // 表示させたいポストのID
    $custom_field_key = 'my_key1'; // 指定ポスト内の表示させたいカスタムフィールドのキー
    $posts = get_post_custom($post_id);
    $values = $posts[$custom_field_key];
    if ($values) :
        $n = 0;
        echo "\n<ul>\n";
        foreach ($values as $value) {
            if ($n == $limit) break;
            echo "<li>$value</li>\n";
            $n++;
        }
        echo "</ul>\n";
    endif;
    ?>

    ランダム表示については表示された結果を順不同にするのではなく、全ての値をランダムにシャッフルしてから表示するという形にしたいと思い、自分なりに試行錯誤をしてはいるのですが、思うような結果を得られずにいます。

    また、出来ればカスタムフィールドのキーが「my_key1,my_key2,my_key3,…」と複数あった場合にも、キーをカンマ区切りなどで任意に指定出来る様にして、指定したそれぞれのキーの値を統合して表示出来ないかと考えています。
    尚、指定するポストは上記コード通り複数ではなく一つで、そのポストのカスタムフィールドのみを表示する形です。

    この「ランダム表示」と「複数キーがある場合にも対応」の二つを実現するのに何か良い方法がありましたらお知恵を拝借させて下さい。
    よろしくお願い致します。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 developer

    (@6flat)

    ランダムに表示したいという点について自己解決しました。
    「複数キーがある場合にも対応」はタイトルとはまた別の問題なので別のトピックを立てようと思います。

    <?php
    $limit = 5;
    $post_id = 10;
    $custom_field_key = 'my_key';
    $posts = get_post_custom($post_id);
    $posts_array = $posts[$custom_field_key];
    if ($posts_array) :
        $n = 0;
        shuffle($posts_array);
        echo "\n<ul>\n";
        foreach ($posts_array as $value) {
            if ($n == $limit) break;
            echo "<li>$value</li>\n";
            $n++;
        }
        echo "</ul>\n";
    endif;
    ?>
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「カスタムフィールドの配列から取得した値をランダムに表示したい」には新たに返信することはできません。