Мой клиент хочет, чтобы некоторые клиенты могли впоследствии оплачивать счета. Поэтому я добавил дополнительное поле в профиле пользователя, где он может выбрать да / нет. Это поле работает нормально и сохраняет правильно.
В зависимости от выбора: нет = поведение интернет-магазина по умолчанию, и клиент должен платить напрямую. да = клиент может заказать товары без оплаты, он получит счет позже.
Также пробовал разные способы оплаты, но они доступны всем, я хочу их только для определенных пользователей.
Теперь я попытался на основе этого поля в functions.php добавить условный фильтр следующим образом:
if (esc_attr( get_the_author_meta( 'directbetalen', $user->ID ) ) == 'no') {
add_filter('woocommerce_cart_needs_payment', '__return_false');
}
Но это не похоже на работу?
Я хочу, чтобы оплата была пропущена, когда для поля установлено значение " no
. В противном случае действуйте как обычно, и клиент должен заплатить.
Всего 1 ответ
Используя WordPress get_user_meta()
, попробуйте следующее:
add_filter( 'woocommerce_cart_needs_payment', 'disable_payment_for_specific_users' );
function show_specific_payment_method_for_specific_users( $needs_payment ) {
if ( get_user_meta( get_current_user_id(), 'directbetalen', true ) === 'no' ) {
$needs_payment = false;
}
return $needs_payment;
}
Код помещается в файл functions.php вашей активной дочерней темы (или активной темы). Он должен работать.