5.3K Comments
WooCommerce স্টোরের নিরাপত্তা ও স্প্যাম অর্ডার ঠেকানোর পূর্ণাঙ্গ গাইড।
WooCommerce Security Guide Pro

WooCommerce সিকিউরিটির জন্য ৬টি পাওয়ারফুল কোড লিস্ট

প্লাগইন ছাড়াই আপনার ই-কমার্স ওয়েবসাইটকে ফেক অর্ডার এবং স্প্যাম বোট থেকে রক্ষা করার জন্য একটি পূর্ণাঙ্গ প্রফেশনাল গাইড।

সঠিকভাবে সেটআপ করার নির্দেশিকা

ওয়ার্ডপ্রেস ড্যাশবোর্ড থেকে Plugins > Add New-তে গিয়ে "Code Snippets" প্লাগইনটি ইন্সটল করুন।

বাম পাশের মেনু থেকে Snippets > Add New অপশনে ক্লিক করুন।

নিচের প্রয়োজনীয় কোডটি কপি করে সেখানে পেস্ট করুন এবং একটি নাম দিন।

"Run snippet everywhere" অপশনটি সিলেক্ট করে Save & Activate বাটনে ক্লিক করুন।

ফোন নাম্বার ভ্যালিডেশন (১১ ডিজিট)

বিবরণ: এই কোডটি চেক করবে যে ফোন নাম্বারটি ঠিক ১১ ডিজিট কি না। ১১ ডিজিটের কম বা বেশি হলে এটি অর্ডার প্রসেস করতে দিবে না এবং একটি এরর মেসেজ দেখাবে।
উপকারিতা: ভুল নাম্বার দিয়ে ফেক অর্ডার করা বন্ধ হবে এবং সঠিক কাস্টমার ভেরিফিকেশন নিশ্চিত হবে।
PHP Snippet Copy Code
add_action('woocommerce_checkout_process', 'khaledit_phone_validation');
function khaledit_phone_validation() {
    $phone = preg_replace('/\D/', '', $_POST['billing_phone']);
    if (strlen($phone) !== 11) {
        wc_add_notice('দুঃখিত! সঠিক ১১ ডিজিটের মোবাইল নাম্বার প্রদান করুন।', 'error');
    }
}

একই নাম্বার দিয়ে পুনরায় অর্ডার রোধ

বিবরণ: যদি একজন গ্রাহক একটি অর্ডার করার পর পরবর্তী ২৪ ঘণ্টা (বা আপনার পছন্দমতো সময়) একই নাম্বার দিয়ে আর অর্ডার করতে না পারে, তবে এটি ব্যবহার করুন।
উপকারিতা: স্প্যাম অর্ডারের সংখ্যা তুলনামূলকভাবে কমিয়ে আনবে এবং আপনার ডাটাবেজ সুরক্ষিত রাখবে।
PHP Snippet Copy Code
add_action('woocommerce_checkout_process', 'khaledit_restrict_repeat_order');

function khaledit_restrict_repeat_order() {
    // চেকআউট ফর্ম থেকে ফোন নম্বর নেওয়া
    $phone = isset($_POST['billing_phone']) ? sanitize_text_field($_POST['billing_phone']) : '';

    if (empty($phone)) {
        return;
    }

    // গত ২৪ ঘণ্টার মধ্যে এই ফোন নম্বর দিয়ে কোনো অর্ডার আছে কি না চেক করা
    $args = array(
        'billing_phone' => $phone,
        'date_created'  => '>' . (time() - 86400), // ৮৬৪০০ সেকেন্ড = ২৪ ঘণ্টা
        'limit'         => 1,
        'return'        => 'ids',
    );

    $recent_orders = wc_get_orders($args);

    if (!empty($recent_orders)) {
        wc_add_notice('আপনি ইতিমধ্যে একটি অর্ডার করেছেন। পুনরায় অর্ডারের জন্য ২৪ ঘণ্টা অপেক্ষা করুন।', 'error');
    }
}

আইপি ব্লক করার লজিক

বিবরণ: এই কোডটি ডাটাবেজে থাকা ব্ল্যাকলিস্টেড আইপি চেক করবে এবং ম্যাচ করলে সাইটে প্রবেশ করতে দেবে না।
উপকারিতা: ক্ষতিকারক ইউজাররা একবার ব্লক হলে তারা পুরো সাইট থেকেই ডি-অ্যাক্টিভেট হয়ে যাবে।
PHP Snippet Copy Code
add_action('init', 'check_blocked_ips');

function check_blocked_ips() {
    $user_ip = $_SERVER['REMOTE_ADDR'];
    $blocked_ips = get_option('blacklisted_ips', array());

    if (in_array($user_ip, $blocked_ips)) {
        wp_die("আপনার আইপিটি ব্লক করা হয়েছে। আপনি এই সাইটে প্রবেশ করতে পারবেন না।");
    }
}

অর্ডার পেজে আইপি ব্লক বাটন

বিবরণ: এটি অ্যাডমিন ড্যাশবোর্ডে অর্ডারের ডিটেইলস পেজে কাস্টমারের আইপি দেখাবে এবং সেখান থেকেই ব্লক করার বাটন যুক্ত করবে।
উপকারিতা: ম্যানুয়ালি কোড না লিখে সরাসরি ড্যাশবোর্ড থেকে ক্ষতিকারক কাস্টমারদের কন্ট্রোল করা যাবে।
PHP Snippet Copy Code
// অর্ডার পেজে বাটন দেখানো
add_action('woocommerce_admin_order_data_after_order_details', 'add_ip_block_button');

function add_ip_block_button($order){
    $ip_address = $order->get_customer_ip_address();
    $blocked_ips = get_option('blacklisted_ips', array());
    
    echo '

Customer IP: ' . $ip_address . '

'; if (in_array($ip_address, $blocked_ips)) { echo 'Unblock This IP'; } else { echo 'Block This IP'; } } // বাটন ক্লিকের অ্যাকশন হ্যান্ডেল করা add_action('admin_init', 'handle_ip_blocking'); function handle_ip_blocking() { if (isset($_GET['block_ip'])) { $ip = $_GET['block_ip']; $blocked_ips = get_option('blacklisted_ips', array()); if (!in_array($ip, $blocked_ips)) { $blocked_ips[] = $ip; update_option('blacklisted_ips', $blocked_ips); } wp_redirect(remove_query_arg('block_ip')); } if (isset($_GET['unblock_ip'])) { $ip = $_GET['unblock_ip']; $blocked_ips = get_option('blacklisted_ips', array()); if (($key = array_search($ip, $blocked_ips)) !== false) { unset($blocked_ips[$key]); update_option('blacklisted_ips', $blocked_ips); } wp_redirect(remove_query_arg('unblock_ip')); } }

নামের ঘরে সংখ্যা বন্ধ করা

বিবরণ: অনেক সময় স্প্যামাররা নামের জায়গায় '12345' লিখে অর্ডার করে। এটি রোধ করতে এই কোডটি নামের ঘরে সংখ্যা থাকা নিষিদ্ধ করে।
উপকারিতা: বট জেনারেটেড ফেক অর্ডার থেকে আপনার অর্ডারের লিস্ট পরিষ্কার থাকবে।
PHP Snippet Copy Code
add_action('woocommerce_checkout_process', 'restrict_name_field');

function restrict_name_field() {
    $first_name = $_POST['billing_first_name'];
    if (preg_match('/[0-9]/', $first_name)) {
        wc_add_notice(__('নামের ঘরে কোনো সংখ্যা ব্যবহার করা যাবে না।'), 'error');
    }
}

অর্ডারের সর্বনিম্ন/সর্বোচ্চ লিমিট

বিবরণ: যদি চান যে কেউ ৫০০ টাকার কম অর্ডার করতে পারবে না অথবা ১০,০০০ টাকার বেশি অর্ডার করতে পারবে না, তবে এটি ব্যবহার করুন।
উপকারিতা: ব্যবসায়িক লস এবং অস্বাভাবিক বিশাল ফেক অর্ডার থেকে রক্ষা করবে।
PHP Snippet Copy Code
add_action('woocommerce_checkout_process', 'set_min_max_order_amount');

function set_min_max_order_amount() {
    $minimum = 1000; // সর্বনিম্ন ৫০০ টাকা
    $maximum = 10000; // সর্বোচ্চ ১০,০০০ টাকা
    $cart_total = WC()->cart->total;

    if ($cart_total < $minimum) {
        wc_add_notice( sprintf(__('অর্ডার করতে হলে কমপক্ষে %s টাকার কেনাকাটা করতে হবে।'), strip_tags(wc_price($minimum))), 'error' );
    } elseif ($cart_total > $maximum) {
        wc_add_notice( sprintf(__('আপনি একসাথে %s টাকার বেশি অর্ডার করতে পারবেন না।'), strip_tags(wc_price($maximum))), 'error' );
    }
}