public function loadDataFromRequest( $request ) {
$invert = isset( $this->mParams['invert'] ) && $this->mParams['invert'];
- // GetCheck won't work like we want for checks.
// Fetch the value in either one of the two following case:
- // - we have a valid submit attempt (form was just submitted, or a GET URL forged by the user)
- // - checkbox name has a value (false or true), ie is not null
+ // - we have a valid submit attempt (form was just submitted)
+ // - we have a value (an URL manually built by the user, or GET form with no wpFormIdentifier)
if ( $this->isSubmitAttempt( $request ) || $request->getVal( $this->mName ) !== null ) {
return $invert
? !$request->getBool( $this->mName )
* @return string|array
*/
public function loadDataFromRequest( $request ) {
- if ( $this->isSubmitAttempt( $request ) ) {
+ $fromRequest = $request->getArray( $this->mName, [] );
+ // Fetch the value in either one of the two following case:
+ // - we have a valid submit attempt (form was just submitted)
+ // - we have a value (an URL manually built by the user, or GET form with no wpFormIdentifier)
+ if ( $this->isSubmitAttempt( $request ) || $fromRequest ) {
// Checkboxes are just not added to the request arrays if they're not checked,
// so it's perfectly possible for there not to be an entry at all
- return $request->getArray( $this->mName, [] );
+ return $fromRequest;
} else {
// That's ok, the user has not yet submitted the form, so show the defaults
return $this->getDefault();