Although the new orderby parameter is great in WP_Query, it does not support multiple orderby for multiple meta_key‘s.
I’ve went through a couple of scenarios and even went and digged into trac and make and came up with the following
-
make.wordpress.org A more powerful orderby in wordpress 4.0
None of the issues regarding this very problem have been answered. It also seems from those two links that there is an issue ordering by a meta_key and another field like post date for instance. I haven’t tried this as yet.
I truelly think that you have two choices here without creating two queries.
-
hack using the
posts_orderbyfilter as described by @s_ha_dum in his answer here -
By making use of PHP ordering using
usort. The idea here would be to sort your query by onemeta_keyand then take the returned posts array ($posts) and sort them by the secondmeta_keybefore the loop starts. You can either use thethe_postsfilter (just remember to remove the filter once done) or simply unset$postsin your template and set it with the reordered array of posts once done