Обнаружение, остался ли пользователь после запроса onBeforeUnload

Вам просто нужно немного кода для отображения этой опции гарантии везде:

// Save warranty as order item custom meta data and display it everywhere
add_action('woocommerce_checkout_create_order_line_item', 'save_order_item_product_warranty', 10, 4 );
function save_order_item_product_warranty( $item, $cart_item_key, $values, $order ) {
    if( isset($values['warrenty_price']) && $values['warrenty_price'] > 0 ) {
        $key = __("Extra Warrenty", "woocommerce");
        $value = strip_tags( '+ '. wc_price( wc_get_price_to_display( $values['data'], array('price' => $values['warrenty_price']) ) ) );
        $item->update_meta_data( $key, $value );
    }
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). проверено и работает.

В полученной странице заказа (и всех других страницах заказа) :

enter image description here

[1112 ] На страницах заказов администратора:

enter image description here

В уведомлениях по электронной почте:

[ 1115] enter image description here

9
задан Chad Birch 5 May 2009 в 17:52
поделиться

2 ответа

В итоге я подключился к событию щелчка для моего документа, и как только я получил щелчок, я решил, что пользователь остался.

Это не лучшее решение, в большинстве случаев (если вы являетесь DiggBar), у вас будет много ложных негативов (люди останутся, и вы никогда об этом не узнаете), но в нашем случае это имело смысл, потому что люди активно взаимодействуют с нашим сайтом, а не только с сайты с фреймами.

По сути, мой код делает это ...

function OnBeforeUnload() {
    Event.observe(document, "click", UserStayed);
    if (IConsiderTheIFrameMightBeTryingToPopOut) {
        return "The site is trying to escape. Do you want to stay?";
    }
}

function UserStayed() {
Event.stopObserving(document, "click", UserStayed);
    // New we know the user is still with us for sure.
}
6
ответ дан 5 December 2019 в 02:08
поделиться

Почему бы просто не использовать метод, который используется в StackOverflow, когда вы получаете всплывающее окно, позволяющее сделать выбор:

Вы уверены, что хотите отойти от этой страницы?

Вы начали писать или редактировать сообщение.

Нажмите OK, чтобы продолжить, или Отмена, чтобы остаться на текущей странице

Тогда не имеет значения, сколько времени они занимают. Если они нажимают одну кнопку, они уходят. Если они нажимают на другого, они остаются.

-7
ответ дан 5 December 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: