• Resolved richag

    (@richag)


    How can I amend the current function to do the following:

    Gets the SHIPPING country from checkout (for not logged in users and logged in users) – instead of the IP address.

    If any of the products in the basket match any in the array and the SHIPPING country matches any that are declared in the countries array it removes it from their basket.

    Script – the current script gets the product ID, and gets the users IP address, if they are in X country it makes the add-to-cart button hidden … getting the ip address does not work 100%, often null is being returned and prevents the user form purchasing when they may in fact be in e.g. the UK and not be restricted to purchase said product … hence why we want to change the way it works

    Function filter_woocommerce_is_purchasable( $purchasable, $product ) {
        // Array with product IDs
        $product_ids = array( 4003, 6104, 4004, 12651, 12647, 12644, 12643, 12640, 12639, 12637, 12633, 12630, 12429, 12427, 11538, 11536, 11534, 11299, 11300, 11301, 11302,11303, 11292, 11293, 11294, 11295, 11296, 11140, 10573, 10554, 10505, 10481, 10237, 9379, 9377, 9375, 9371, 9368, 7756, 7023, 6101, 5952, 5950, 5948, 4791, 4790, 4786, 4784, 4780, 4778, 4775, 4771, 4767, 3268, 3267, 3266, 3258, 12300, 12083, 11632, 11594, 11249, 11088, 10964, 10966, 10967, 10698, 10692, 10417, 10179, 9598, 9593, 9333, 9108, 6049, 6047, 6045, 5017, 5003, 4936, 4806, 4682, 4677, 4673, 4671, 4663, 4661, 4650, 4646, 4644, 4642, 4622, 4444, 3252, 3249, 3247, 3207, 3202, 3122, 3110, 3106, 12318, 12316, 12313, 12311, 12309, 12304, 12006, 12007, 12008, 12009, 12010, 12011, 11944, 11945, 11946, 11947, 11948, 19494, 11950, 11936, 11937, 11938, 11939, 11940,11941, 11942, 11928, 11929, 11930, 11931, 11932, 11933, 11934, 11920, 11921, 11922, 11923, 11924, 11925, 11926, 11912, 11913, 11914, 11915, 11916, 11917, 11918, 11904, 11905, 11906, 11907, 11908, 11909, 11910, 11896, 11897, 11898, 11899, 11900, 11901, 11902, 11888,11889, 11890, 11891, 11892, 11893, 11894, 11880, 11881, 11882, 11883, 11884, 11885, 11886, 11843, 1844, 11845, 11846, 11847, 11848, 11849, 11835, 11836, 11837, 11838, 11839, 11840, 11841, 11827, 11828, 11829, 11830, 11831, 11832, 11833, 11730, 11716, 11702,11706, 11707, 11708, 11709, 11710, 11711, 11712, 11713, 11714, 11698, 11610, 11600, 11278, 10631, 10483, 10416, 10413, 10411, 10402, 10183, 10172, 10170, 10154, 10055, 10051, 9909, 9911, 9912, 9913, 9162, 9159, 9158, 9156, 9106, 7698, 7700, 7701, 6696, 5961, 4930, 4928, 4926, 4889, 4890, 4891, 4892, 4893, 4894, 4895, 4881,  4882, 4883, 4884, 4885, 4886, 4887, 4686, 4682, 4659, 4650, 4622, 4420, 3395, 3399, 3400, 3401, 3379, 3319, 3289, 3299, 3297, 3298, 3193, 3176, 13321,  12465, 12443, 12013, 12012, 11687, 11688, 11689, 11690, 11691, 11681, 11628, 11683, 11684, 11685, 11675, 11676, 11677, 11678, 11679, 11307, 11305, 11177, 10720, 10711, 10712, 10713, 10714, 10388, 10175, 10167, 10162, 10049, 10047, 9767, 9306, 8228, 8235, 8236, 8237, 7815, 7241, 7018, 7019, 7020, 7021, 7013, 7004, 7005, 7006, 7007, 6841, 6776, 6773, 6770, 6682, 6683, 6684, 6685, 6686, 6667, 6669, 6670, 6671, 6672, 6104, 5012, 4924, 4919, 4912, 4913, 4914, 4916, 4917, 4918, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4987, 4898, 4899, 4900, 4901, 4902, 4903, 4873, 4835, 4831, 4829, 4823, 4804, 4652, 4011, 4012, 4013, 4008, 4009, 4010, 4005, 4006, 4007, 4002, 3999, 4000, 4001, 3996, 3997, 3998, 3254, 1701, 1699, 13747, 13659, 13527, 13608 ,13609, 13610, 13612, 13613, 13614, 13615, 13616, 13617, 13618, 31619, 13620, 13621, 13622, 12369, 12367, 12365, 12348, 12331, 12329, 12327, 12325, 12320, 12033, 11965, 11974, 11967, 11968, 11969, 11970, 11971, 11972, 11973, 11506, 11394, 11395, 11396, 11397, 11398, 11399, 11400, 11401, 11402, 11403, 11404, 11405, 11406, 11407, 11408, 11409, 11254, 10961, 10933, 10936, 10938, 10939, 10940, 10941, 10942, 10943, 10944, 10945, 10092, 9490, 9494, 9495, 9496, 9497, 9498, 9499, 9500, 9501, 9502, 9503, 9504, 9505, 9506, 9507, 9507, 9508, 9119, 9117, 9115, 8453, 8456, 8457, 8458, 8459, 8460, 8461, 8462, 8463, 8468, 8465, 8466, 8467, 8468, 8469, 8470, 8864, 8857, 8733, 8734, 8735, 8736, 8737, 8738, 8739, 8740, 8741, 8742, 8743, 8744, 8745, 8746, 8747, 8748, 8579, 8642, 8643, 8644, 8646, 8647, 8517, 8518, 8519, 8520, 8521, 8522, 8523, 8524, 8525, 8526, 8527, 8528, 8529, 8530, 8531, 8532, 8533, 7110, 7111, 7112, 7113, 7114, 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, 7123, 7124, 7125, 6540, 8357, 6541, 6542, 6543, 6544, 6545, 6546, 6547, 6548, 6549, 6551, 6552, 6553, 6554, 6454, 8358, 6461, 6462, 6464, 6465, 6466, 6467, 6468, 6469, 6470, 6471, 6472, 6473, 6474, 6475, 6446, 6082, 4570, 4518, 4550, 4551, 4552, 4553, 4554, 4555, 4556, 4557, 4558, 4559, 4560, 4561, 4562, 4563, 4564, 4479, 4469, 4456, 4444, 12475, 12302, 11944, 11945, 11946, 11947, 11948, 11949, 119450, 11936, 11937, 11938, 11939, 11940, 11942, 11928, 11929, 11930, 11931, 11932, 11933, 11934, 11920, 11921, 11922, 11923, 11924, 11925, 11926, 11912, 11913, 11914, 11915, 11916, 11917, 11918, 11904, 11905, 11906, 11907, 11908, 11909, 11910, 11896, 11897, 11898, 11899, 11900, 11901, 11902, 11888, 11889, 11890, 11891, 11892, 11893, 11894, 11894, 11880, 11881, 11883, 11884, 11885, 11886, 11871, 11872, 11873, 11874, 11875, 11876, 11877, 11861,11862, 11863, 11864, 11865, 11866, 11867, 11863, 11854, 11855, 11856, 11857, 11858, 11859, 11843, 11845, 11846, 11847, 11848, 11849, 11835, 11836, 11837, 11838, 11839, 11840, 11841, 11827,  11828, 11829, 11830, 11831, 11832, 11833, 11819, 11820, 11821, 11822, 11823, 11824, 11825, 11810, 11811, 11812, 11813, 11814, 11815, 11816, 11802, 11804, 11805, 11806, 11807, 11808, 11809, 11725,  11727, 11728, 11729, 11702, 11706, 11707, 11708, 11709, 11710, 11711, 11712, 11713, 11714, 11578, 11280, 11281, 11282, 10416, 10413, 10411, 10402, 10062, 9781, 9779, 9777, 9775, 9773, 9771, 9750, 9742, 9732, 9727, 9484, 8212, 7678, 7676, 7674, 7672, 7670, 7668, 4822, 4820, 4813, 4808, 4802, 4737, 4735, 4733, 4731, 4729, 2727, 4721, 4717, 4715, 4711, 4710, 4709, 4708, 4707, 4706, 4697, 3289, 10928, 5990, 12024, 12002, 7014, 7015, 7016, 6996, 4934, 4932, 4915, 4874, 4875, 4878, 4879, 4837, 4838, 4839, 14760, 6857, 6855, 14800, 15031, 3386, 3387, 5069, 5007, 5008, 5069, 7769, 5076, 5081, 5082, 5052, 5070, 5071, 5072, 3138, 15075, 15057, 15177, 3319, 12630, 14016, 9811, 9822, 9825, 3113, 15507, 15427, 15426, 15425, 15424, 15422, 15421, 15420, 15419, 3106, 3107, 3108, 3109, 13310, 16371, 16369, 16364, 16357, 16372 );
    
        // Get current product ID
        $product_id = $product->get_id();
    
        // Only for specific products
        if ( in_array ( $product_id, $product_ids ) ) {
            // Get an instance of the WC_Geolocation object class
            $geolocation_instance = new WC_Geolocation();
    
            // Get user IP
            $user_ip_address = $geolocation_instance->get_ip_address();
    
            // Get geolocated user IP country code
            $user_geolocation = $geolocation_instance->geolocate_ip( $user_ip_address );
    
            // For specific countries 
            if ( in_array( $user_geolocation['country'], array( 'AT', 'AU', 'BE', 'CA', 'CH', 'DE', 'DK', 'ES', 'FO', 'FR', 'GG', 'GI', 'GR', 'HR', 'IM', 'IE', 'IN', 'IS', 'IT', 'LT', 'LV', 'MT', 'MY', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK', 'US' ) ) ) {
                // NOT purchasable
                $purchasable = false;
            }
    
        }
    
        return $purchasable;
        

    • This topic was modified 1 year, 11 months ago by richag.
    • This topic was modified 1 year, 11 months ago by richag.
    • This topic was modified 1 year, 11 months ago by richag.
Viewing 2 replies - 1 through 2 (of 2 total)
  • Saif

    (@babylon1999)

    Hello @richag,

    I’m afraid custom code/solutions are a note within our scope of support.

    The closest thing I can think of to achieve this is with the Conditional Shipping and Payments extension by removing all payment methods with the condition in the screenshot below. You’ll also need to put all these products in one category as there is no option for selecting individual products.


    Link to image.

    Alternatively, you can work with a WooExpert to help you figure out a custom solution.

    Cheers!

    Plugin Support Gabriel – a11n

    (@gabrielfuentes)

    We haven’t heard back from you in a while, so I’m going to mark this as resolved – we’ll be here if and/or when you are ready to continue.

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Get shipping country from checkout field and remove product from basket’ is closed to new replies.