The answer is f(x)=cx,c∈R (these obviously work).
First, by putting x=0 and y=0 respectively we have
f(x2)=xf(x) and f(−y2)=−yf(y).
From this we deduce that f is odd, in particular f(0)=0. Then, we can rewrite the given as f(x2−y2)+f(y2)=f(x2). Combined with the fact that f is odd, we deduce that f is additive (i.e. f(a+b)=f(a)+f(b) ).
Remark (Philosophy). At this point we have f(x2)≡xf(x) and f additive, and everything we have including the given equation is a direct corollary of these two. So it makes sense to only focus on these two conditions.
Then
f((x+1)2)⟹f(x2)+2f(x)+f(1)=(x+1)f(x+1)=(x+1)f(x)+(x+1)f(1)
which readily gives f(x)=f(1)x.