How about this:
library(tidyverse)
region = sample(c('EU', 'AP', 'GU', 'PS', 'EL'), 20, replace = TRUE)
ctry = sample(c("wp", "vw", "ct", "vj", "yk", "uu", "xo", "av", "za", "zj", "lz", "vs", "fq"), 20, replace = TRUE)
items = sample(1:20)
mydf <- data.frame(region, ctry, items) %>%
mutate(ctry = factor(ctry, levels = unique(ctry)))
sorted_df_hard <- mydf %>%
count(ctry, region) %>%
arrange(ctry, -n) %>%
mutate(ctry = factor(ctry, levels = unique(ctry)),
ctry = forcats::fct_reorder(ctry, n, .fun = sum))
ggplot(sorted_df_hard, aes(x = ctry, y = n, fill = region)) +
geom_bar(stat="identity") +
coord_flip()

Created on 2020-02-05 by the reprex package (v0.3.0)
You can achieve what (I think) you are trying to do by adding using forcats::fct_reorder on your ctry variable ordering by the sum of each factors n variable