Если вы хотите включить этот вид функции в WooCommerce, клиенты должны быть зарегистрироваться и войти на первом, так как это единственный способ получить они города место, прежде чем оформлять заказ.
Также вам нужно будет изменить некоторые настройки в WooCommerce, разрешив пользователям только регистрировать пользователей.
Тогда вам нужно будет добавить некоторые обязательные поля в процессе регистрации как город, почтовый индекс и страну.
Как только это будет сделано, будет легко включить/отключить платежные шлюзы на основе этих зарегистрированных полей клиента.
1) Для настройки регистрационных полей:
How to add custom fields in user registration on the “My Account” page
2) для платежных шлюзов/методы, основанные на этой информации клиента, Вы можете использовать пользовательский крючковатую функцию в woocommerce_available_payment_gateways
фильтра крючка:
add_filter('woocommerce_available_payment_gateways', 'custom_payment_gateways_process');
function custom_payment_gateways_process($available_gateways) {
if (is_admin() || !is_user_logged_in())
return $available_gateways;
$current_user_id = get_current_user_id();
$user_meta = get_user_meta($current_user_id);
// User City, Postcode, State and Country code
$user_city = $user_meta['billing_city'];
$user_postcode = $user_meta['shipping_postcode'];
$user_State = $user_meta['shipping_state'];
$user_country = $user_meta['shipping_country'];
Disable Cash on delivery ('cod') method example for customer out of spain:
if (isset($available_gateways['cod']) && $user_country != 'ES') {
unset($available_gateways['cod']);
}
// You can set many conditions based on the user data
return $available_gateways;
}
Этот код является всего лишь примером, и вам необходимо будет установить правильные условия для целевых способов/шлюзов оплаты ...
Код находится в файле functions.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Есть a; отсутствует в '$ current_user_id = get_current_user_id()' и строка, которая должна быть комментарием «Отключить наложенным платежом ...». Но я не могу отредактировать сообщение, так как это подпадает под минимум 6 символов. – rlcabral
@rlcabral Спасибо ... Я только что обновил свою ошибку. :) – LoicTheAztec