Se metto come dici tu nell'header me lo apre direttamente ( e funziona, basti infatti che nel primo codice che vedi setti autoOpen:true.

Quello che voglio invece è che il dialog si apra dopo (solo in caso di una particolare condizione).

In teoria richiamando il metodo nel corpo (lascia perdere la momento la condizione PHP) dovrebbe funzionare.

Il codice js è corretto (quello per l'apertura)?.