Myslím, že máš ve skutečnosti problém s PHP. Když uděláte array($results_separated) v podstatě vytváříte pole z řetězce, který vypadá takto:"12,114,56," . Tím PHP vytvoří takové pole:
array(
0 => "12,114,56,"
)
A samozřejmě WordPress nemůže najít žádné příspěvky s takovým ID! To, co chcete, je ve skutečnosti takové pole:
array(
0 => "12",
1 => "114",
2 => "56"
)
A vlastně to je to, co get_col() vrátí, takže stačí předat $results na set() funkce:
$query->set ( 'post__in', $results );
UPRAVIT :Vlastně jsem si uvědomil, že váš problém je, když zavoláte $wpdb->get_col(...) , protože to narušuje $query provedete později... Tyto proměnné používají nějaké jiné globální proměnné, které pravděpodobně budou přepsány, a proto nedostáváte žádné výsledky...