$instance Widget instance options.
*
* @return void
*/
public function fields( $widget, $ret, $instance ) {
$allowed_user_roles = allowed_user_roles();
wp_nonce_field( 'content-control-widget-editor-nonce', 'content-control-widget-editor-nonce' );
$which_users_options = [
'' => __( 'Everyone', 'content-control' ),
'logged_out' => __( 'Logged Out Users', 'content-control' ),
'logged_in' => __( 'Logged In Users', 'content-control' ),
];
$instance = parse_widget_options( $instance );
?>
$label ) : ?>
$instance Widget instance options.
* @param array $new_instance New widget instance options.
* @param array $old_instance Old widget instance options.
*
* @return array|bool
*/
public function save( $instance, $new_instance, $old_instance ) {
if ( isset( $_POST['content-control-widget-editor-nonce'] ) && wp_verify_nonce( wp_unslash( sanitize_key( $_POST['content-control-widget-editor-nonce'] ) ), 'content-control-widget-editor-nonce' ) ) {
$new_instance = parse_widget_options( $new_instance );
$instance['which_users'] = $new_instance['which_users'];
$instance['roles'] = $new_instance['roles'];
if ( 'logged_in' === $instance['which_users'] ) {
$allowed_roles = allowed_user_roles();
// Validate chosen roles and remove non-allowed roles.
foreach ( (array) $instance['roles'] as $key => $role ) {
if ( ! array_key_exists( $role, $allowed_roles ) ) {
unset( $instance['roles'][ $key ] );
}
}
} else {
unset( $instance['roles'] );
}
} else {
// Failed validation, use old instance.
$old_instance = parse_widget_options( $old_instance );
$instance['which_users'] = $old_instance['which_users'];
if ( empty( $old_instance['roles'] ) ) {
unset( $instance['roles'] );
} else {
$instance['roles'] = $old_instance['roles'];
}
}
return $instance;
}
}