What is my increment code missing?

Your basic concept is OK, right , but have these variables

button
buttonState
buttonNumber

functions / roles all mixed up and in wrong places

Restructure your code, and start with this basic if() construct

loop()
{
is button pressed ?
do this ( set state to x)
else
not pressed , do this ( keep state in Y )
}

keep in mid that loop() is really not helping and will run the basic if() construct continually
you need to modify to detect the button presses changes only once by adding / placing "buttonState".

const int pin0 = 6;
const int pin1 = 2;     
const int pin2 = 3;     
const int pin3 = 5;
const int button = 7;


     
int buttonState = 0;

void setup() {
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
  pinMode(pin3, OUTPUT);
  pinMode(pin0, OUTPUT);
  pinMode(button, INPUT);

Serial.begin(9600);

}
 

void loop() {

int buttonNumber = 0;
 
// const int button = 7;

// buttonState = digitalRead(button);

  if (button == HIGH) {
    buttonNumber++;
    }
  if (buttonNumber == 4)
  buttonNumber = 1;
 
 
  buttonState = digitalRead(button);


  if (buttonNumber == 0) {   
    Serial.println("State0 High");
    digitalWrite(pin0, HIGH);
  } else {
   Serial.println("State0 Low");
    digitalWrite(pin0, LOW);
  }

 
  if (buttonNumber == 1) {   
    digitalWrite(pin1, HIGH);
    Serial.println("State1 High");
  } else {
    Serial.println("State1 Low");
    digitalWrite(pin1, LOW);
  }

  if (buttonNumber == 2) {
   Serial.println("State2 High");   
    digitalWrite(pin2, HIGH);
  } else {
    Serial.println("State2 Low");
    digitalWrite(pin2, LOW);
  }


  if (buttonNumber == 3) {
   Serial.println("State3 High");   
    digitalWrite(pin3, HIGH);
  } else {
    Serial.println("State3 Low");
    digitalWrite(pin3, LOW);
  }

 
}