Внутри Loop вывода постов запускаете счетчик постов.
Когда счетчик равен 3 - перед выводом поста выводите рекламный блок.
Когда счетчик равен 5 - перед выводом поста выводите рубрики.
Я бы в functions.php создал ежедневное cron-событие, которое будет отбирать посты двухдневной давности и через wp_insert_post менять у них post_status с publish на pending.
Возможно проблема и не там, но... меня смущает две вещи:
а) у Вас открывается два foreach, а закрывается один.
б) Вы перебираете таксономии, выводя с каждой по 6 постов. Если у Вас в каждой таксономии меньше шести постов, то, вполне возможно, будут выводиться все записи.
... а дата поста выводится только в первом посте потому, что в цикле вывода постов используется the_date()
А он выводит дату для группы постов, которые опубликованы в один день.
Замените the_date() на the_time() или выводите get_the_date() - и будет Вам счастье.