Сделайте так, чтобы метод WC_Cart add_to_cart работал для гостей в Woocommerce. - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь заставить мой код работать.Ищу часы сейчас.Я нашел похожие вопросы, как этот .Но, к сожалению, похоже, никто не нашел решения.

В своем пользовательском плагине я хочу добавить определенный элемент в корзину WC и перенаправить пользователя прямо к оформлению заказа.Как вошедший в систему пользователь работает как брелок, но для гостей он показывает пустую страницу при оформлении заказа (шорткод woocommerce_checkout, похоже, ничего не возвращает в этом случае).Поэтому я пришла с проверкой, если корзина пуста.Видимо, это потому, что «страница корзины» показывает «В корзине еще нет товаров».

В коде я проверяю, пуста ли корзина, но говорит, что нет!

Вот мой код:

if(!$wooID = $wpdb->get_var("SELECT wooID FROM ".$wpdb->prefix."ceb_events WHERE id = $event")) die("ERROR GETTING WOOID");

WC()->cart->empty_cart();

if(!WC()->cart->add_to_cart( $wooID, 1 )) die("CART GOT NOT UPDATED. THERE IS AN ERROR 1.");

if(WC()->cart->get_cart_contents_count() == 0) die("CART GOT NOT UPDATED. THERE IS AN ERROR 2."); 

//Here follows the redirect to checkout page

Код работает без ошибок.И это работает на 100% как зарегистрированный пользователь / администратор.Только не в качестве гостя, даже если я разрешил выезд гостя в настройках woocommerce.

1 Ответ

0 голосов
/ 22 ноября 2018

Вам необходимо инициировать сеанс пользователя Woocommerce, когда он не вошел в систему. Поэтому вы будете использовать следующее:

add_action( 'woocommerce_init', 'force_non_logged_user_wc_session' );
function force_non_logged_user_wc_session(){ 
    if( is_user_logged_in() || is_admin() )
       return;

    if ( ! WC()->session->has_session() ) 
       WC()->session->set_customer_session_cookie( true ); 
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...