Ну дык и меняй в css через ховер.
:hover { background-image: url(../img/bg.jpg) ...
Используй также transition
А так вопрос не ясен. В какой момент и почему меняется фон. При клике, скролле, другой странице. На событие прикрепи смену class (js) и изменяй свой фон
margin: 0 auto для родительского блока, если элемент один.
Для два и более, варианты с центрированием вы знаете.
Можете убрать flex direction row
Он включается по умолчанию
Ещё вёрстку, дизайн, seo, маркетинг, экономику, телепатию, дар предсказания, удачу, дар убеждения, сервера, 1c, "все нюансы текущего бизнеса", хакинг, и т.д.
Это для идеального решения. А так php, js, codex wp, понимание структуры и опыт