Отключить платежную проверку WooCommerce для метаданных определенного пользователя

Мой клиент хочет, чтобы некоторые клиенты могли впоследствии оплачивать счета. Поэтому я добавил дополнительное поле в профиле пользователя, где он может выбрать да / нет. Это поле работает нормально и сохраняет правильно.

В зависимости от выбора: нет = поведение интернет-магазина по умолчанию, и клиент должен платить напрямую. да = клиент может заказать товары без оплаты, он получит счет позже.

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

Теперь я попытался на основе этого поля в 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 вашей активной дочерней темы (или активной темы). Он должен работать.


Есть идеи?

10000