How do I make a true ghost sign?

This is a so-called "invalid state", because the sign is not meant to be there in a normal situation. So you always have to abuse a bug or external editor to get it there and then be careful to not change anything on any of the six adjacent blocks ever again.

With commands, you can just use /setblock, because it doesn't update the block (MC-31100). But you have to specify everything about the sign. The one in your example can be set like this:

/setblock ~ ~ ~ oak_wall_sign[facing=north]{Text1:"{\"text\":\"\"}",Text2:"{\"text\":\"This is a\"}",Text3:"{\"text\":\"floating sign\"}",Text4:"{\"text\":\"\"}"}

You have to replace the north with south, east or west for the other directions.

Without commands, you'll likely have to use stack overflows for update suppression, since most other bugs that do it are fixed. For that, you can for example use a machine like this one.