Как то так но я не проверял
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
if ( ! function_exists( 'single_add_to_cart_wrapper_start' ) ) {
function single_add_to_cart_wrapper_start() {
?>
<div class="product_footer">
<?php
}
}
if ( ! function_exists( 'single_add_to_cart_wrapper_end' ) ) {
function single_add_to_cart_wrapper_end() {
?>
</div>
<?php
}
}
add_action( 'woocommerce_after_single_product_summary', 'single_add_to_cart_wrapper_start', 1 );
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_template_single_add_to_cart', 3 );
add_action( 'woocommerce_after_single_product_summary', 'single_add_to_cart_wrapper_end', 5 );
на базе второго ответа вот готовый код, менее многословный
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
if ( ! function_exists( 'single_add_to_cart_in_footer' ) ) {
function single_add_to_cart_in_footer() {
?>
<div class="product_footer">
<?php woocommerce_template_single_add_to_cart(); ?>
</div>
<?php
}
}
add_action( 'woocommerce_after_single_product_summary', 'single_add_to_cart_in_footer', 5 );