Я новичок в WooCommerce и недавно сделал простой шорткод для гостевых пользователей, чтобы ввести свои почтовые индексы, которые будут корректировать цены в магазине.
function set_zip() {
$bool = is_user_logged_in();
if($bool == false){
echo "<div id=\"zip-check\">
<form action=\"\" method=\"post\">
<label for=\"zip-input\">Please enter your zip code:</label>
<input type=\"text\" id=\"zip-input\" name=\"zip-input\" pattern=\"[0-9]{5}\" title=\"5 character zip code\">
<input type=\"submit\">
</form>
</div>";
}
}
add_shortcode( 'set_zip', 'set_zip' );
add_action( 'init', 'process_post' );
function process_post() {
if( isset( $_POST['zip-input'] ) ) {
$bool = is_user_logged_in();
if($bool == false){
$zip = $_POST['zip-input'];
global $woocommerce;
$woocommerce->customer->set_shipping_postcode( $zip );
$woocommerce->customer->set_postcode( $zip );
}
}
}
Я знаю, что код еще не идеален, но пока он работает.
Когда гость добавляет товар в свою корзину и затем вводит свой почтовый индекс, он работает отлично. Даже если он удалит товары из корзины, шорткод все равно обновит его почтовый индекс. Но когда гость вводит почтовый индекс перед добавлением продуктов в корзину, почтовый индекс не сохраняется. Почему это и как это исправить?