2016-04-28 1 views
2

Я не уверен, что это правильный вопрос, но все же я не нашел для этого никаких решений. Я пытаюсь создать метод, когда пользователь переходит на страницу/сайт, отличный от текущей страницы Checkout, корзина пользователя будет автоматически опустошена. Интересно, возможно ли это, потому что я изменил поток покупок своего пользовательского электронного магазина. Я попытался выполнить поиск в Интернете и попробовать много методов, но он, похоже, не работает. В настоящее время мне трудно понять, как работают функции WooCommerce &.WooCommerce Empty Cart, если пользователь перешел на страницу или сайт, отличный от текущей проверки Страница

Теперь, позвольте мне сказать вам, ребята, как мой код работает с самого начала: -

Это код для страницы, которые отображают весь доступный продукт. Как вы можете видеть, когда пользователь хотел купить продукт, он нажмет кнопку «Купить», и мой электронный магазин автоматически добавит этот товар в корзину.

<?php 
// Querying of product information retrieval 
$args = array('post_type' => 'product', 'posts_per_page' => 4, 'orderby' =>'menu_order', 'order' =>'ASC'); 
$loop = new WP_Query($args); 

// Display each retrieved product 
while ($loop->have_posts()) : 
$loop->the_post(); 

// WooCommerce global product variable 
global $product; 
global $woocommerce; 


the_title(); 
the_excerpt(); 
echo $product->get_price_html(); 
$id = $product->id; 
?> 

/**** Select the product & automatically add to cart ****/ 
<a href="<?php echo do_shortcode('[add_to_cart_url id="' . $id . '"]'); ?>"><button type="button"> BUY</button></a> 

<?php endwhile; ?> 
<?php wp_reset_query(); // After the loop ended, quit the custom loop and reset back the main loop 
?> 

Когда мой E-магазин завершили процесс «добавить в корзину», то пользователь будет перенаправлен на заказ странице. Функция для него следующая.

add_filter ('add_to_cart_redirect', 'redirect_to_checkout'); 

function redirect_to_checkout() { 
global $woocommerce; 
$checkout_url = $woocommerce->cart->get_checkout_url(); 
return $checkout_url; 
} 

В основном то, что я пытаюсь сказать это, пользователь будет непосредственно перенаправлены на страницу Checkout после нажмите, чтобы купить этот продукт. Этот метод пропустил страницу Single Product & Добавить на страницу Корзина.

Но сейчас, мне нужна помощь при определении правильного метода , если пользователь выйдет из этой страницы или выйдет из системы, тележка будет автоматически пуста. Является ли это возможным? Если нет, извините за недостаток знаний.

Я пробовал код ниже, так как он наиболее близок к тому, что я хочу. Закрыть, но не работает.

add_action('init', 'woocommerce_clear_cart_url'); 
function woocommerce_clear_cart_url() { 
    global $woocommerce; 

    if (!is_page('93')) { 
     $woocommerce->cart->empty_cart(); 
    } 
} 

С выше функции, всякий раз, когда я попытался вернуться на главную страницу или перейти на другую ссылку и нажмите купить еще раз, тележка просто продолжайте добавлять. Эта вещь заставляет меня потерять рассудок. Надеюсь, вы, ребята, можете мне помочь.

+0

Hi Kaydarin. Вы когда-нибудь находили решение для этого? Мне нужно сделать то же самое. – inspirednz

+0

@inspirednz PLS попробовать мое решение – DrMosko

ответ

0

WordPress условно не работает, когда init (его слишком рано использовать is_page('93')). так что используйте то, что Dont опирающийся на WordPress условными:

получить URL страницы из is_page('93') позволяет сказать: www.domain.name/checkout

затем использовать этот код в functions.php:

/*empty cart if user come to homepage*/ 
add_action('init', 'woocommerce_clear_cart_url'); 
function woocommerce_clear_cart_url() { 
global $woocommerce; 

if ($_SERVER['REQUEST_URI'] !=== '**www.domain.name/checkout**') { 
    $woocommerce->cart->empty_cart(); 
} 
} 
Смежные вопросы