Realmente é necessario fazer isto com o union?
minha sugestão:
SELECT ID
,post_name
,post_update
FROM wp_posts
INNER JOIN wp_term_relationships
ON wp_term_relationships.object_id = wp_posts.ID
WHERE wp_term_relationships.term_taxonomy_id IN ('254', '112')
AND wp_posts.ID != '10768'
AND wp_posts.post_status = 'publish'
AND wp_posts.linguagem != 'en'
ORDER BY RAND()
LIMIT 8;
Provavelmente essa consulta que fiz tera melhor desempenho porque em comparação com a primeira consulta, utilizei operador "IN" ao invés de várias cláusulas "UNION ALL".
Além disso, a clausa where roda somente uma vez, em vez de rodar tres vezes.