• 解決済 no23h

    (@no23h)


    wpサイトAのカスタム投稿を、wpサイトBからREST APIで取得しています。
    引用先のurl指定部分で、orderby=rand を設定していますが、エラーで出力できません。

    [wpサイトB page-test.php]

    <?php
      $url = 'xxx/xxx/wp-json/wp/v2/xxx?per_page=30&orderby=rand';
    
      $json = mb_convert_encoding(file_get_contents($url), 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
    
      $arr = json_decode($json,true);
    ?>
    <?php foreach($arr as $data): ?>
      <div class="seeds_list">
        <a href="<?php echo $data['link']; ?>">
          <h1><?php echo $data['title']['rendered']; ?></h1>
          <p><?php echo $data['acf']['seeds_subtitle']; ?></p>
        </a>
      </div>
    <?php endforeach ?>

    [エラーコード]

    Warning: file_get_contents(xxx/xxx/wp-json/wp/v2/xxx?per_page=30&orderby=rand): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /home/xxx/www/xxx/wp-content/themes/xxx/page-test.php on line 31
    
    Warning: Invalid argument supplied for foreach() in /home/xxx/www/xxx/wp-content/themes/xxx/page-test.php on line 36

    orderbyにdateやtitleを指定すると問題なく表示されるのですが、
    rand指定はできないのでしょうか。

    お詳しい方、ご教授いただけますと幸いです。
    宜しくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • こんにちは

    REST API の Posts エンドポイントなどの orderby パラメーターでは rand は使えません。
    使えるようにするには、こちらのトピックが参考になると思います。

    補足です。

    wpサイトAのカスタム投稿を、wpサイトBからREST APIで取得しています。

    カスタム投稿のようなので、

    add_filter( 'rest_post_collection_params', 'add_orderby_rand_rest_post_collection_params' );

    こちらの rest_post_collection_params の post はカスタム投稿に変更する必要があります。

    トピック投稿者 no23h

    (@no23h)

    @ishitaka

    ご返答いただきましてありがとうございます!
    無事ランダムで表示することができました!
    感謝申し上げます。

    トピック投稿者 no23h

    (@no23h)

    解決済みにします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「REST APIで取得した投稿リストをランダムで表示したい」には新たに返信することはできません。