Immer wieder passiert es mir, dass ich bei Benutzung von get_posts() ein leeres Array zurückbekomme. Die Lösung ist einfach.
Man muss den Post Status setzen, auf ‚draft‘, ‚publish‘ oder einfach ‚any‘ um die posts mit jedem Post Status zurückzubekommen.
$posts = get_posts(array(
'post_type' => 'post',
'post_status' => 'any'
));