Тренироваться лучше на тестовых с фреймворками, база подходов у них одинаковая, начав понимать архитектуру фреймворков намного легче идти дальше или писать на цмс нормальный код (цмс сами по себе не плохие, просто никто не ставит себе цель писать на них долгоживущие и поддерживаемые проекты). Параллельно нужно подтягивать знания грамотного ООП