Immagino che tu abbia effettivamente un problema con PHP. Quando esegui array($results_separated) stai fondamentalmente creando un array da una stringa che assomiglia a questa:"12,114,56," . In questo modo, PHP sta creando un array come questo:
array(
0 => "12,114,56,"
)
E ovviamente WordPress non riesce a trovare alcun post con tale ID! Quello che vuoi è in realtà un array come questo:
array(
0 => "12",
1 => "114",
2 => "56"
)
E in realtà è quello che get_col() restituisce, quindi devi solo passare $results a set() funzione:
$query->set ( 'post__in', $results );
MODIFICA :In realtà mi sono reso conto che il tuo problema è quando chiami $wpdb->get_col(...) , perché interferisce con la $query eseguirai in seguito... Quelle variabili utilizzano altre variabili globali che probabilmente vengono sovrascritte, ed è per questo che non ottieni alcun risultato...