Вот что пока что пришло в голову:
SELECT wp_posts.ID, wp_posts.post_title, wp_postmeta.meta_value FROM wp_posts
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id AND wp_postmeta.meta_key = 'pinned'
WHERE wp_posts.post_type = 'partners'
# AND wp_postmeta.meta_key = 'pinned'
# ORDER BY wp_posts.post_date DESC LIMIT 25
ORDER BY IF(wp_postmeta.meta_value, CAST(wp_postmeta.meta_value AS UNSIGNED), wp_posts.post_date) ASC, wp_posts.post_date DESC
LIMIT 25
В решении основывался на варианте с wp-kama но без обертки над WP_Query так как она оказалась не рабочей, так что пошел думать как это реализовать на чистом SQL запросе,
Суть задачи собственно какая, нужно отсортировать записи по дате и произвольному полю "pinned" но без самой фильтрации (что get_posts / WP_Query почему то не умеют делать и фильтруют записи даже если не указывать meta_value, меня такое не особо устраивает), нюансы сортировки, сначала должны выводиться закрепленные записи в ASC (хотя в теории не особо критично, главное что бы шли первые) в после уже остальные "не закрепленные" по дате (или любому другому полю в ASC/DESC, текущий вариант не позволяет так делать