wp_set_post_categories should take an integer
|Reported by:||ptahdunbar||Owned by:|
wp_set_post_categories(); can only be passed an array of cat ids. If you pass it an integer, it resets the value to the default category even though the category exists.
This happens as the if statement runs an OR check to see if the second parameter is not an array or empty. If one is true, it just goes on ahead and resets the parameter to be the default category regardless if the value was empty or a string.
Patch fixes this by strict typing the second parameter to an array. It also strict types the default category id as it was being returned as a string.