Rotating about and only one axis

Hello Unity community, first post here, hope my question formatting is okay! I’m trying to rotate about the z-axis a tower that is looking at the player who can move around the tower on the X-Y plane. I’ve tried multiple functions including Vector3.Slerp, Vector3.Lerp, Quaternion.RotateTowards. They seemed to work but, however, all three have a special case that I do not intend the tower to do: when the player is completely behind the tower, the tower chooses to rotate about its local Y-axis (note: it is a 2d platform and I have rotated the tower object so that +Z points at -X, +Y still pointing at +Y, and +X pointing at +Z).
So what I tried instead was using Quaternion.Slerp to rotate the tower, but as soon as I run the following code the tower slerps to and points forward in the positive z-axis.

	Vector3 aimVector = playerPosition - transform.position;
	Quaternion newRotation = Quaternion.LookRotation(aimVector, transform.up);
	newRotation.x = 0.0f;
	newRotation.y = 0.0f;	
	transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, Time.deltaTime * rotateSpeed);

You don’t want to directly assign the x,y,z values of a Quaternion (rotation) unless you have a firm understanding of the math. You can achieve what you want by:

Vector3 aimVector = playerPosition - transform.position;
aimVector.y = 0.0f;
Quaternion newRotation = Quaternion.LookRotation(aimVector, transform.up);
transform.rotation = Quaternion.Slerp(transform.rotation, newRotation, Time.deltaTime * rotateSpeed);