Чтобы сохранить динамичность c вы можете использовать следующий код, добавит новое поле на вкладку ограничения использования
// Add new field - usage restriction tab
function action_woocommerce_coupon_options_usage_restriction( $coupon_get_id, $coupon ) {
woocommerce_wp_text_input( array(
'id' => 'customer_user_id',
'label' => __( 'User ID restrictions', 'woocommerce' ),
'placeholder' => __( 'No restrictions', 'woocommerce' ),
'description' => __( 'List of allowed user IDs. Separate user IDs with commas.', 'woocommerce' ),
'desc_tip' => true,
'type' => 'text',
));
}
add_action( 'woocommerce_coupon_options_usage_restriction', 'action_woocommerce_coupon_options_usage_restriction', 10, 2 );
// Save
function action_woocommerce_coupon_options_save( $post_id, $coupon ) {
update_post_meta( $post_id, 'customer_user_id', $_POST['customer_user_id'] );
}
add_action( 'woocommerce_coupon_options_save', 'action_woocommerce_coupon_options_save', 10, 2 );
Так что в вашем случае вы можете использовать это вместе с кодом подтверждения
$user_ids = "1, 2, 3";
update_post_meta( $new_coupon_id, 'customer_user_id', $user_ids );
// Valid
function filter_woocommerce_coupon_is_valid( $is_valid, $coupon, $discount ) {
// Get meta
$customer_user_id = $coupon->get_meta('customer_user_id');
if( !empty( $customer_user_id ) ) {
// Convert string to array
$customer_user_id = explode(', ', $customer_user_id);
// Get current user id
$user_id = get_current_user_id();
if ( ! in_array( $user_id, $customer_user_id ) ) {
$is_valid = false;
}
}
return $is_valid;
}
add_filter( 'woocommerce_coupon_is_valid', 'filter_woocommerce_coupon_is_valid', 10, 3 );