Tie Breakers via ACF?
-
Hi Collin & Dabernathy,
I work as a front end developer and am currently using your quiz add-on for a site I and my team are building. We needed to apply weights to more important questions for the quiz in order to make a “tiebreaker” rather than have the tie breaker be chosen randomly, so we added some code to your php class and set the important questions to loop through via ACF fields.
Here is the code:
/* BEGINNING OF CUSTOM */ // A+A addition: get tiebreaker field $tiebreaker1 = get_field('tiebreaker1', 'option'); $tiebreaker2 = get_field('tiebreaker2', 'option'); $tiebreaker3 = get_field('tiebreaker3', 'option'); $tiebreaker4 = get_field('tiebreaker4', 'option'); // if tiebreaker1 exists, set final with Array ID, else set at ID 0 if ($tiebreaker1) { $tiebreaker_next1 = $tiebreaker1; $tiebreaker_final1 = $lead[$fields[$tiebreaker_next1]->id]; } else { $tiebreaker_final1 = ''; } // if tiebreaker2 exists, set final with Array ID, else set at ID 0 if ($tiebreaker2) { $tiebreaker_next2 = $tiebreaker2; $tiebreaker_final2 = $lead[$fields[$tiebreaker_next2]->id]; } else { $tiebreaker_final2 = ''; } // if tiebreaker3 exists, set final with Array ID, else set at ID 0 if ($tiebreaker3) { $tiebreaker_next3 = $tiebreaker3; $tiebreaker_final3 = $lead[$fields[$tiebreaker_next3]->id]; } else { $tiebreaker_final3 = ''; } // if tiebreaker4 exists, set final with Array ID, else set at ID 0 if ($tiebreaker4) { $tiebreaker_next4 = $tiebreaker4; $tiebreaker_final4 = $lead[$fields[$tiebreaker_next4]->id]; } else { $tiebreaker_final4 = ''; } // invoke only if more than 1 winner if ( count($winners) > 1 ) { // if the tiebreaker1 answer is a winner, print it if (in_array($tiebreaker_final1, $winners)) { return $tiebreaker_final1; // if the tiebreaker2 answer is a winner, print it } elseif (in_array($tiebreaker_final2, $winners)) { return $tiebreaker_final2; // if the tiebreaker3 answer is a winner, print it } elseif (in_array($tiebreaker_final3, $winners)) { return $tiebreaker_final3; // if the tiebreaker4 answer is a winner, print it } elseif (in_array($tiebreaker_final4, $winners)) { return $tiebreaker_final4; // otherwise do the regular thing } else { shuffle($winners); return $winners[0]; } // else resume normal operation } else { // return the winner, or if it was a tie, a random winner shuffle($winners); return $winners[0]; } } /* END OF CUSTOM */
Problem we are having is that ONLY the first tiebreaker is working and ONLY for the first quiz. We have two quizzes with the same weighted questions, however only the first tiebreaker for the first quiz seems to be working. Would you be able to give us some guidance on what we can do to fix the issue? Any help would be much appreciated.
Look forward to hearing from you.
Phillip
- The topic ‘Tie Breakers via ACF?’ is closed to new replies.