WordPressで固定ページの子ページにランダムに飛ぶリンクボタン
四択クイズの動きを WordPressの中に組み込みたくて色々考えていた時に見つけたソースを紹介します。
四択クイズの問題を固定ページにひとつ一つ登録させた後、次の問題に移動するボタンに登録したクイズページ(各固定ページ)をランダムに選びリンクさせたいと思いました。色々探していたら下記のサイトに使えそうなソースがあったので紹介します。
【WordPress】ある固定ページの子ページをランダムに表示するPHP関数
上記のサイトでは下記のソースのように固定ページの親ページに属している子ページをランダムに選びいくつか並べ表示するソースが紹介されています。これはこれでとても画期的なソースです。これを使い、私のやりたいランダムに選ぶクイズのボタンを考えてみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<p class="related-hl">関連記事</p> <?php global $post; $args = array( 'post_type' => 'page', 'sort_order' => 'DESC', 'sort_column' => 'post_modified', 'child_of' => 2 ); ?> <?php $myposts = get_pages( $args ); shuffle($myposts); ?> <?php foreach( array_slice($myposts,0,3) as $post ) : setup_postdata($post);?> <div class="related-div"><a href="<?php the_permalink();?>"> <?php the_post_thumbnail(array(150,150)); ?> <?php the_title();?></a></div> <?php endforeach; ?> <?php wp_reset_postdata(); ?> |
上記ソースを参考に下記のように手を加えました。
1 2 3 4 5 6 7 8 9 10 |
<?php global $post; $args = array( 'post_type' => 'page', 'sort_order' => 'DESC', 'sort_column' => 'post_modified', 'child_of' => // ※ここに親の固定ページのIDを入れます! ); ?> <?php $myposts = get_pages( $args ); shuffle($myposts); ?> <?php foreach( array_slice($myposts,0,1) as $post ) : setup_postdata($post);?> <p><a href="<?php the_permalink();?>">次の問題へ!</a></p> |
要は基のソースでは三つのページが選ばれていましたが、それを一つにしてリンクだけのソースに変更しただけです。これでやりたいことはできたのですが、どうやらshuffleではなくmt_randを用いたほうが乱数の生成には良いそうです。まあ、phpはわからないので時間のある時にでも実験してみたいです。
関連リンク:Webコミュ