Podríamos llamar a esto el «WooCommerce anti-spam sin complemento«Serie, mientras intento luchar contra los humanos malos y los bots muy malos que aman atacar la página de pago de negocios de negocios con pedidos de spam y registros falsos de los usuarios.
Mis primeros intentos fueron (1) Mi cuenta Registro anti-spam honeypot(2) Vuelva a pagar el honeypot contra el ataques de ataquesy (3) Reducción del número de correos electrónicos administrativospero puedo decir que (2) no funcionó, y obtuve otro ataque de cardado en un producto de $ 9 el pasado fin de semana. Los bots son inteligentes.
Hoy, me gustaría compartir otro fragmento contra el spam que estoy probando actualmente en Business Bloomer. Mayoría Los ataques de cardado, de hecho, terminan con la compra de un solo producto en el rango de $ 1- $ 9 – Lo que significa que limitar las ventas diarias para productos específicos y económicos puede hacer el truco.
Mi código cuenta las veces que cada producto se ha comprado durante el día, y si se produce un ataque de cardado, el producto no se puede comprar hasta el final del día. Debido a que estamos hablando de productos baratos, no es un problema para mí no permitir las ventas legítimas durante 24 horas. Use bajo su propio riesgo, por supuesto.
Ya cubrimos cómo «Limite las ventas de un producto por día“, Pero esta vez me gustaría aplicar eso a una variedad de productos, y específicamente todos los que tienen menos de $ 10. ¡Disfrutar!
Php Snippet: Limite las ventas diarias para productos $ 1- $ 9 @ WooCommerce Checkout
Nota: Siéntase libre de cambiar el rango de precios del producto (En la primera línea de la función, excluyo productos fuera del valor del precio de $ 1- $ 9), y el Umbral de ventas diario (En la segunda línea de la función, establecí esto en las ventas de Max 3).
/** * @snippet Limit Sales To Avoid Carding Attacks @ WooCommerce * @how-to businessbloomer.com/woocommerce-customization * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 8 * @community https://businessbloomer.com/club/ */ add_filter( 'woocommerce_is_purchasable', 'bbloomer_not_purchasable_after_daily_limit', 9999, 2 ); function bbloomer_not_purchasable_after_daily_limit( $is_purchasable, $product ) { // CONSIDER ONLY PRODUCTS IN THE $1-$9 RANGE if ( $product->get_price() > 9 || $product->get_price() < 1 ) return $is_purchasable; // GET TODAYS ORDERS AND COUNT PRODUCT SALES $all_orders = wc_get_orders( array( 'limit' => -1, 'date_created' => date( 'Y-m-d' ), 'return' => 'ids', ) ); $count = array(); foreach ( $all_orders as $all_order ) { $order = wc_get_order( $all_order ); $items = $order->get_items(); foreach ( $items as $item ) { $product_id = $item->get_product_id(); if ( $product_id ) { $count[$product_id] = isset( $count[$product_id] ) ? $count[$product_id] + absint( $item['qty'] ) : absint( $item['qty'] ); } } } // LIMIT 3 DAILY SALES if ( $count[$product->get_id()] >= 3 ) return false; return $is_purchasable; }