1

Wordpressからランダムな質問のセットを選択する以下のコードがあります。

<?php
    $rows = get_field('step_by_step_test');
    $row_count = count($rows);
    $rand_rows = array();
    $questions = get_field('select_number_of_questions');
    for ($i = 0; $i < min($row_count, $questions); $i++) {
        $r = rand(0, $row_count - 1);
        while (array_search($r, $rand_rows) !== false) {
            $r = rand(0, $row_count - 1);
        }
        $rand_rows[] = $r;
        echo $rows[$r]['question'];
    }
?>

少し余分なコード(以下)を組み込みたいのですが、同じランダムな質問を選択していることを確認するにはどうすればよいですか?

<?php if(get_sub_field('answer_options')): ?>
<?php while(has_sub_field('answer_options')): ?> 
    <?php echo the_sub_field('answer'); ?>
<?php endwhile; ?> 
<?php endif; ?>
4

3 に答える 3

3

アプローチを少し変えてみませんか?

<?php 
   $rows = get_field('step_by_step_test');  // Get the test
   $question_count = get_field('select_number_of_questions');  // Get the number of questions
   $rows = shuffle($rows);   // Randomize your questions
   $rows = array_slice($rows, $question_count);   // Now set the array to only contain the number of questions you wanted
   foreach ($rows as $row) {
       echo $row['question'];    // Show the question
       if(get_sub_field('answer_options', $row['id'])) {
              while(has_sub_field('answer_options', $row['id'])) {
                       echo the_sub_field('answer');
              }
       }
   } 
?>

「get_sub_field」を変更して質問のIDを含めることができると仮定したので、「answer_options」の「where」フィールドにIDを含めることができます。これにより、質問をリンクできるようになります。

于 2012-09-30T04:12:02.387 に答える
1

必要なのは、すべてをループ状に設定することだと思います。カスタムフィールドによるクエリ

または、上記で取得した質問のIDを保存し、次に、それらの特定の投稿に対する回答をクエリすることもできます。

于 2012-09-29T23:04:17.647 に答える
0

上記のTheSwiftExchangeのコードの修正バージョンでAdvancedCustomFieldsプラグイン+RoyalSliderを使用して、WordPressスライダーをランダム化した方法は次のとおりです。

<div id="full-width-slider" class="royalSlider heroSlider rsMinW">

<?php
   /*
    *  Slider Repeater field shuffled
    *  http://stackoverflow.com/questions/12563116/incorporating-extra-loop-into-random-selection
    */


    $rows = get_field('slider');
//  For Debugging:
//  echo "<pre>";
//  var_dump($rows);
//  echo "</pre>";

    $quotes = get_field('slide_text');  // Get the number of images
    shuffle($rows);   // Randomize your slides

    foreach ($rows as $row) {

        $slideImageID =  $row['slide_image'];
        $slideImage = wp_get_attachment_image_src( $slideImageID, 'full' );
        $slideText = $row['slide_text'];
        ?>

        <div class="rsContent">

               <div class="royalCaption">
                   <div class="royalCaptionInner">

                       <div class="infoBlock">
                            <?php if(!empty($slideText)) {
                                   echo $slideText;
                           }; ?>
                       </div>
                   </div>
               </div>
               <img src="<?php echo $slideImage[0]; ?>" class="" />

        </div><!-- /.rsContent -->
    <?php }  // end foreach ?>

</div><!-- /slider-wrap -->
于 2012-12-27T21:38:13.150 に答える