• 締切済み

'orderby' => 'rand'が効かない

wordpressにて特定の投稿タイプの記事をランダムで2件表示させたいのですが、 'orderby' => 'rand'が全く効きません。 <?php $test = array( 'post_type' => 'ポストタイプ名', 'showposts' => 2, 'orderby' => 'rand' ); ?> <?php query_posts($test); ?> ・ ・ ・ 上記のように記述しているのですが、ランダムではなく、新しい順に記事が2件出てしまいます。 ランダムで2件抽出したい場合は他に何か記述が必要なのでしょうか? ご回答の程宜しくお願い致します。

  • peco33
  • お礼率79% (123/154)
  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5085/13289)
回答No.1

関連するQ&A

  • array_randを使いたい?

    phpでarray_randを使ってCSVのデータをランダム表示させたいです。 phpの知識がなくどのようにすればいいかわかりません。 CSVは id,商品名,説明文,価格,画像URL,リンク先URL, こんな感じになっています。 いろいろと調べてランダムにするにはarray_randを使えばいいのがわかったのですが、どのようにPHPを書けばいいかわかりません。 すいませんが、詳しく教えていただけないでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • wordpressで特定の記事の本文だけを取り出す記述

    wordpressで特定の記事の本文だけを取り出す記述 超初心者です。 下記のようなwordpressの関数を使ったPHP文で「特定の記事の本文」のみを取り出したく いろんなwordpressのサンプルなどを参考にして作ってみました。 結果はまあ思い通りには出るのですが、 これって1つの記事を取り出すだけならスマートじゃないですよね・・・。 <?php query_posts('p=277'); ?> <?php if(have_posts()):while(have_posts()):the_post(); ?> <div><?php the_content(); ?></div> <?php endwhile;endif; ?> いまいちwhileなどのループなどがわかってないのですが、 よく考えれば1つの記事を抜き出すのにループを記述する必要があるのか? いろいろ試してみたのですが、エラーが頻出して挫折。 どうすればいいのかがわかんなくて質問させていただきました。 熟練された方はどういう記述にするのか参考にさせていただきたいです。

    • ベストアンサー
    • PHP
  • wordpressの投稿記事が日付順に並ばない

    初めまして。wordpressについてお聞きしたいのですが、 どなたか詳しい方、教えて頂けないでしょうか。 カスタム投稿で作った記事のタイトルと日付を抽出して、新着情報一覧を作りました。 この投稿記事を、新着順にソートして並べたいのですが、不具合がでて困っています。 普段はwordpressのデフォルトの設定通り、最新の日付順に表示されているのですが、 たまに、古い記事の下に新着記事が表示されてしまうのです。 例えば8/1に投稿した記事の下に、最新の8/12の投稿が 表示されてしまいます。 プラグインは 「Post Types Order」と「postMash」を入れています。 このプラグインの不具合でおかしくなることはあるのでしょうか。 【ソース】 <?php query_posts('post_type=news&posts_per_page=6'); ?> <?php if(have_posts()): while(have_posts()): the_post(); ?> <?php get_template_part('content','title'); ?> <?php endwhile; endif; ?> 【仕様】 WordPress 2.9. PHP 5.2.17 データベース バージョン: MySQL 5.5 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 5つずつ15件の記事を分割して表示したい

    <!--ループ1--> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 'posts_per_page' => 2, // 表示する投稿数(-1を指定すると全投稿を表示) ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 0; $i <= 10; while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <?php $i++; ?> <?php if ($i >= 3) break; ?> <?php endwhile; ?> <?php endif; ?> <!--//ループ1--> <!--ループ2--> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 'posts_per_page' => 2, // 表示する投稿数(-1を指定すると全投稿を表示) ); $wp_query->query($my_posts); while ($wp_query->have_posts()) : $i<=7;//iが7より小さい時は処理を繰り返す。 if ($wp_query->have_posts()) : $i>4; //iが4より大きい時は、実施する。 continue; // 以降の処理をスキップし、次の回(条件2)に移る $wp_query->the_post(); ?> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <?php $i++; ?> <?php if ($i >= 3) break; ?> <?php endif; ?> <?php endwhile; ?> <!--//ループ2--> $wp_query->query($my_posts);で投稿ページの情報を吸い取り、そこからタイトルや画像やコメントを取得しているようですが。 $my_postsは先頭に戻る特性があって、それを読み飛ばす処理が必要となっているようです。 そこで $i>4;//iが3より大きい時は、while文を強制終了する $wp_query->the_post(); continue; // 以降の処理をスキップし、次の回(条件2)に移る?>として 読み飛ばす処理を実装したつもりが記事が表示されません。原因は何が考えられるでしょうか?

    • ベストアンサー
    • PHP
  • 3件目以降出力されないので4件目から出力したい

    <!--ループ1--> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : $i = 0; $i <= 10; while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <?php $i++; ?> <?php if ($i >= 3) break; ?> <?php endwhile; ?> <?php endif; ?> <!--//ループ1--> <!--ループ2--> <?php $wp_query = new WP_Query(); $args = array( 'post_type' => "post", //投稿タイプ設定 ); $wp_query->query($my_posts); if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $i<=4; //iが4より小さい時は、while内のループ処理を実施する $i>3;break; //iが3より大きい時は、while文を・強制終了する $wp_query->the_post(); ?> <?php /**** ▼1件分の投稿内容HTML ****/ ?> <?php $i++; ?> <?php endwhile; ?> <?php endif; ?> <!--//ループ2--> 変数 i の値が 0 から → $i = 0 10 未満の間は、 → $i <= 10 i の値を1づつ加算しながら → i++ 以下の命令文を実行する。 continue; echo $i; //以降の処理をスキップして、次のループ処理を行う。 0から3まででbreakして, $i<=4; //iが4より小さい時は、while内のループ処理を実施する $i>3;break; //iが3より大きい時は、while文を強制終了する 3件で出力を止めたんですが、4件目から出力されません

    • ベストアンサー
    • PHP
  • 【WordPress】投稿がないカテゴリ非表示方法

    【WordPress】 投稿がないカテゴリー 非表示 方法 カテゴリーの1つを決め すべての子カテゴリーと投稿を表示させる際に、 子カテゴリー内に投稿がない場合、 子カテゴリー名を表示させないようにしたいです。 下記のソースでうまくいきませんでした。 <?php $chihirdren=get_categories( 'parent=5&hide_empty=0&orderby=slug&order=DESC'); foreach($chihirdren as $child){ ?> <?php if(have_posts()):?> <h2><?php echo $child->cat_name ?></h2> <?php else: // no post ?> <?php endif; ?> <?php $wp_query->query(array('cat'=>$child->cat_ID,'posts_per_page'=>-1)); while ($wp_query->have_posts()) : $wp_query->the_post(); ?> <h3><?php the_title(); ?></h3> <?php endwhile; } ?> 大変申し訳ございません。 ご教授をお願いいたします。。

    • ベストアンサー
    • PHP
  • array_randで要素が数字の場合の処理方法

    PHPのarray_randについて教えて下さい。 下記のようなソースを作りましたが思った通りの結果になりません。 //(A) $test=array(3,5,8,11,14,24,26,28); print_r($test); foreach ($test as $val) { echo $val.'<br>'; } //(B) $keys = array_rand($test, 5);//決められた数を抽出 print_r($keys).'<br><br>'; foreach ($keys as $val) { echo $val.'<br>'; } Aの部分の結果は Array ( [0] => 3 [1] => 5 [2] => 8 [3] => 11 [4] => 14 [5] => 24 [6] => 26 [7] => 28 ) foreachの部分の出力↓ 3 5 8 11 14 24 26 28 となりこれは特に問題ありません。 Bの部分でAの配列から5つランダムで取り出したいのですが、結果は Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 6 [4] => 7 ) 0 foreachの部分の出力↓ 0 3 5 6 7 となってしまい、Aの配列の添え字の中から5つの数字が選ばれるようになってしまいます。 Aの添え字ではなく「3,5,8,11,14,24,26,28」の数字から5つランダムで取り出すにはどのような書き方をすればよいのでしょうか? ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • $queryや$argsの意味

    お世話になります。 wordpressの勉強に色々なサイトを見てサンプルコードを試したりしてますが その中に$queryや$argsといった文字列があったります。 条件にしたがって表示件数を変更のサンプルソースに function set_post_per_page( $query ) { if ( is_admin() || ! $query->is_main_query() ) return; if ( $query->is_home() ) { $query->set( 'posts_per_page', 1 ); return; } if ( $query->is_post_type_archive( 'movie' ) ) { $query->set( 'posts_per_page', 50 ); return; } } add_action( 'pre_get_posts', 'set_post_per_page'); というソースがありました。 これはホームの場合は全件表示し、movieのアーカイブページは50件表示にするソースだと思いますが $queryや$query->の意味が分かりません。 他にも global $post; $args = array( 'posts_per_page' => 5, 'cat' => 1 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) { setup_postdata($post); ?> <h1><?php the_title(); ?></h1> <?php } wp_reset_postdata(); というソースがありましたがこちらにも$args等入っており理解ができません。 これはどういう意味なのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • wordpressのリンクでの質問です。

    リンクの仕方で質問です。 現在参考書を読みながらwordpressの勉強をしています。 index.phpに <?php query_posts('category_name=test' ); ?> <?php if (have_posts()): ?> <ul class="item-lists"> <?php while(have_posts()): the_post(); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a> </li> <?php endwhile; ?> </ul> <?php endif; wp_reset_query(); ?> というループ文があります。 投稿記事から設定したアイキャッチのみを表示させ横一列にフロートしています。 現在リンク先が共有テンプレートになっており記事一つ一つ、個別に表示されるようになってます。 <?php the_permalink(); ?>を<?php bloginfo('url'); ?>/test/ に変更すれば意図したカテゴリーへリンク出来ますが、この方法で正しいのでしょうか? また、本来リンクしたいカテゴリーは記事ごとにアンカーを設定しています。(t01~t10) このループ文の中でアイキャッチに対応した記事のアンカーへリンクするにはどうすれば良いでしょうか? アドバイス等頂ければ本当に助かります。

    • ベストアンサー
    • CSS
  • array_randの改善・配列からランダムにキーを取得

    配列からランダムに値を取得したい。関数array_randを用いると可能だが、同じ値を繰り返し取得してしまうことがある。この点を改善したい。方法をおしえてください。 (例) 配列 1,2,3,4,5,6,7,8,9 からarray_randでランダムに1つ選ぶ。 1回目、4が選ばれる。array_randの場合、2回目も4が選ばれてしまうことがある。これを4以外の8つの値から1つを選ぶように改善したい。これを繰り返す。最後は配列が空になるようにしたい。 状況 phpを実行する都度、配列は、別ファイルのデータを読み込んで使用している。実行するユーザーの識別が必要でしょうか?

    • 締切済み
    • PHP