Rotary Encoder DT pin notworking

I am trying to use a Rotary Encoder to get some user input. When it is moved CW the value should go up and when moved CCW the value should go down. But the rotary encoder was always reading CCW. When I looked into the serial monitor I saw that the signal on the DT pin was always LOW. I tried changing some pins but it didn't help, I also tried changing out the rotary encoder. After a while, I got some random outputs but no correlation to any turns. Some of the pins gave no output and some gave a sporadic output. This is some test code, but I don't think it is a software issue. I would say the board is bad but other pins are working fine even when switched. I think it's just a DT problem and I don't know what it is.

 // Rotary Encoder Inputs
#define CLK 8
#define DT 11
#define SW 9

int counter = 0;
int currentStateCLK;
int lastStateCLK;
String currentDir ="";
unsigned long lastButtonPress = 0;

void setup() {
  
  // Set encoder pins as inputs
  pinMode(CLK,INPUT);
  pinMode(DT,INPUT);
  pinMode(SW, INPUT_PULLUP);

  // Setup Serial Monitor
  Serial.begin(9600);

  // Read the initial state of CLK
  lastStateCLK = digitalRead(CLK);
}

void loop() {
  
  // Read the current state of CLK
  currentStateCLK = digitalRead(CLK);

  // If last and current state of CLK are different, then pulse occurred
  // React to only 1 state change to avoid double count
  if (currentStateCLK != lastStateCLK  && currentStateCLK == 1){

    // If the DT state is different than the CLK state then
    // the encoder is rotating CCW so decrement
    if (digitalRead(DT) != currentStateCLK) {
      counter --;
      currentDir ="CCW";
    } else {
      // Encoder is rotating CW so increment
      counter ++;
      currentDir ="CW";
    }

    Serial.print("Direction: ");
    Serial.print(currentDir);
    Serial.print(" | Counter: ");
    Serial.println(counter);
  }

  // Remember last CLK state
  lastStateCLK = currentStateCLK;

  // Read the button state
  int btnState = digitalRead(SW);

  //If we detect LOW signal, button is pressed
  if (btnState == LOW) {
    //if 50ms have passed since last LOW pulse, it means that the
    //button has been pressed, released and pressed again
    if (millis() - lastButtonPress > 50) {
      Serial.println("Button pressed!");
    }

    // Remember last button press event
    lastButtonPress = millis();
  }

  // Put in a slight delay to help debounce the reading
  delay(1);
}

If you think it's a hardware issue, please post hardware details. Such as a wiring diagram.

Have you read the forum instructions about how to make an effective post?

The wiring is nothing fancy, just an Arduino nano with each wire plugged directly to the respective pin.

Ah, well there can't be any problem with that then, can there be?
Instructions:
Just plug each wire into its respective pin...
https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum/679966#schematics-or-circuit-diagrams

Good luck.