Как я могу перенаправить обратно в / корзину после нажатия на ссылку «Отменить», когда удаляю из нее элемент?
Меня не волнует пустая корзина или нет. Мне уже пришлось реализовать template_redirect
, поэтому, когда пользователь «удаляет» элемент из корзины, он перенаправляет обратно в корзину, а не на домашнюю страницу. С:
add_action( 'template_redirect', function( ) {
$_var = ( $_GET[ 'removed_item' ] ) ?? null;
//var_dump($_var);
if( $_var == '1' ){
wp_safe_redirect( '/cart', 301 );
die();
}
} );
Могу ли я подключиться к тому же действию? Я не вижу строку запроса после нажатия кнопки «Отменить», хотя ...
EDIT
Я вижу, где выполняется действие. Он в плагине включает / class-ws-form-handler.php, прямо вокруг строки 536 ... содержащий:
// Undo Cart Item
$cart_item_key = sanitize_text_field( $_GET['undo_item'] );
WC()->cart->restore_cart_item( $cart_item_key );
$referer = wp_get_referer() ? remove_query_arg( array( 'undo_item', '_wpnonce' ), wp_get_referer() ) : wc_get_cart_url();
wp_safe_redirect( $referer );
exit;
РЕДАКТИРОВАТЬ 2:
Добавление следующего к моему перенаправлению выше ничего не делает ...
// undo the remove, redirect back to cart
if ( ! empty( $_GET['undo_item'] ) && isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'woocommerce-cart' ) ) {
// Undo Cart Item
$cart_item_key = sanitize_text_field( $_GET['undo_item'] );
WC()->cart->restore_cart_item( $cart_item_key );
wp_safe_redirect( wc_get_cart_url() );
exit;
}
Итак, когда я var_dump
wp_get_referer()
, я возвращаюсь на главную страницу сайта, а это не то, что я ищу. Я не хочу изменять этот файл из-за того, что это не слишком хорошая идея ... так, как я могу вместо этого просто изменить действие? Сама функция: public static function update_cart_action()