Cómo obtener temas ordenados por el valor de campo personalizado iso8601?

Querrás cambiar esto por:

.order("COALESCE(CAST(custom_fields.value AS timestamp), custom_fields.value) DESC")

para mejorar la legibilidad.

Ordenas por sortDate y, cuando este no está disponible, usas createdAt. Todo en orden descendente. La consulta devuelve los datos exactamente como se solicitaron, ya que 2020 es “mayor” que el segundo lugar de 2011.

Si deseas que los valores nulos aparezcan al final, necesitas:

.order("CAST(custom_fields.value AS timestamp) DESC NULLS LAST")