WordPressで固定ページの子ページにランダムに飛ぶリンクボタン

四択クイズの動きを WordPressの中に組み込みたくて色々考えていた時に見つけたソースを紹介します。

四択クイズの問題を固定ページにひとつ一つ登録させた後、次の問題に移動するボタンに登録したクイズページ(各固定ページ)をランダムに選びリンクさせたいと思いました。色々探していたら下記のサイトに使えそうなソースがあったので紹介します。

 【WordPress】ある固定ページの子ページをランダムに表示するPHP関数

上記のサイトでは下記のソースのように固定ページの親ページに属している子ページをランダムに選びいくつか並べ表示するソースが紹介されています。これはこれでとても画期的なソースです。これを使い、私のやりたいランダムに選ぶクイズのボタンを考えてみました。

<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(); ?>

上記ソースを参考に下記のように手を加えました。

<?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はわからないので時間のある時にでも実験してみたいです。

関連記事