Проблему циклической переадресации еще решает если поставить страницы оплаты и корзину в настройках разными, содержимое можно оставить идентичным.
Может быть, хотя насколько мне помнится, не решает.
В любом случае здесь можно еще просто не пускать пользователя в пустую корзину.
И как же вы это сделаете? Даже если поубирать отовсюду ссылки на корзину при пустой корзине, то всегда можно руками прописать "Cart", можно где-то нажать "назад", да мало ли?
Со вторым моментом что-то припоминаю. Суть в том, что в зависимости от страницы "корзина" или "оплата", wordpress подгружает определенные скрипты. Я когда-то с этим боролся (п.7 сообщения 1). Но в последнее время проблема исчезла. Как я в свое время решил, это произошло из-за обновления до более полной версии. Но сейчас начинаю думать, что это как раз могло проявляться из-за того, что страницы Корзины и Оплаты ссылались на разные страницы, и подгрузка скриптов происходила как раз в зависимости от того, является ли данная страница согласно настроек woocommerce (а не шорткогов, засунутых в нее) корзиной или оплатой. Там идет проверка if ( is_cart() ) и соответственно if ( is_checkout() ), а эти переменные (постоянные, константы, настройки, я не силен в программировании
) статстраницам присваиваются как раз в настройках woocommerce.
Короче, вывода 2: обновитесь до последней версии и выставьте в настройках woocommerce чтобы статстраница \cart была И "страницей корзины" И "страницей оплаты". Ну или повторяйте танцы с бубном из п.7 сообщения 1 этой темы