Я не специалист в MySQL, но вообще по стандарту SQL в блоке select можно указывать только те поля, которые либо указаны в блоке group by (то есть по которым осуществляется группировка), либо передаются в групповую функцию, такую как sum, max и т.д.
Судя по документации, MySQL позволяет не придерживаться данного правила, но тогда для полей не удовлетворяющих озвученным выше условиям выбирается произвольная строка из группы.
Для того, чтобы отключить в MySql расширенное трактование GROUP BY, нужно
включить режим ONLY_FULL_GROUP_BY
Относительно вашего запроса, повторная выборка столбца p.post_date, после того как вы указали, что хотите получить записи с последней датой - max(p.post_date), явно не имеет смысла и ломает группировку. Уберите ее, ну и в целом лучше придерживаться стандарта, так ваши запросы будет легче портировать если вы будете мигрировать на другую СУБД, да и недопонимания будет меньше.