I learned that moving a conducting rod in a constant magnetic field
creates EMF across the rod.
On the other hand, Faraday's law says that the EMF is equal to the
change in time of the magnetic flux, while the magnetic flux of the
moving rod is 0 and it still has EMF across it.
Let's, for simplicity, assume that the rod lies in a plane normal to the magnetic field lines and it moves in the direction normal to its length. Then, we can say that, while the rod is moving, it is crossing or cutting magnetic field lines, which is equivalent to the change of magnetic flux through the rod. The resulting $emf=Bvl$ can be derived based on the Lorentz force acting on the electrons inside the rod or based on the magnetic flux crossing the rod.
Let's say we have a rectangular conducting wire moving in a constant
magnetic field. According to Faraday's law, the change in the flux is
0 and therefore there should be no EMF, but we saw that a moving rod
in a magnetic field had EMF, so I don't understand why here we are not
getting the same results.
Here we can just say that the magnetic flux crossing the rectangle does not change over time. Or, we can say that the $emf$, induced in the opposite sides of the rectangle (since they are crossing magnetic field lines), cancel each other. The result would be the same: no induced emf.