在WooCommerce中有沒有一種方式/插件來限制某個產品在特定區域下載。請記住,這不是假設爲網站範圍,而是基於產品到產品的基礎。WooCommerce限制按國家或地區下載產品 - [已解決]
我想象的是,在結帳時,如果某個產品具有啓用下載限制的功能,則會拉出當前用戶的位置(國家/地區),並將其與該產品允許的國家/地區進行比較。如果匹配,則檢查收益如果不匹配,則返回一條消息,通知用戶他們請求的產品無法在其國家下載。問題是,是否存在這樣的插件,特徵,功能或片段,如果存在的話?
更新:看到沒有答案我已經開始,並開始創建自己的東西。我沒有以前的PHP經驗,所以請幫我簡化代碼。你可以嘗試一下。它是否正確?
UPDATE(解決方案): Woocommerce現在有一個內置的,對於店主的自定義函數使用檢查用戶位置,並將其存儲功能,去野外用吧:)
下面的代碼進入你的主題的functions.php文件。它會在「常規標籤」下的產品頁面添加/編輯頁面中添加一個「區域設置」面板。它有兩個選項,「限制類型:」可以設置爲「允許」或「拒絕」和「地區:」選項,您可以在其中指定將受影響的國家/地區。如果產品的區域設置沒有設置,它將允許每個人訪問它。
/**
* Mazwi WooCommerce Region Control BETA
* ------------------------------------
*
*
*
* Execute code if the user's country (set for each product) is allowed
*
* Author: Taf Makura
* Thanks to Remi Corson's Tutorial
*/
// Display Fields
add_action('woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields');
// Save Fields
add_action('woocommerce_process_product_meta', 'woo_add_custom_general_fields_save');
// Display Fields
function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '<div class="options_group">';
?>
<?php
// Select
woocommerce_wp_select(
array(
'id' => '_restriction-type',
'label' => __('Restriction type', 'woocommerce'),
'options' => array(
'allow' => __('Allow', 'woocommerce'),
'deny' => __('Deny', 'woocommerce'),
)
)
);
// Create Textarea
woocommerce_wp_textarea_input(
array(
'id' => '_regions',
'label' => __('Regions', 'woocommerce'),
'placeholder' => '',
'desc_tip' => 'true',
'description' => __('Please enter two letter country codes. Each country code should be followed by a coma Example: ZW, AU, ZA, US ', 'woocommerce')
)
);
echo '</div>';
}
function woo_add_custom_general_fields_save($post_id){
// Select
$woocommerce_select = $_POST['_restriction-type'];
if(!empty($woocommerce_select))
update_post_meta($post_id, '_restriction-type', esc_attr($woocommerce_select));
// Textarea
$woocommerce_textarea = $_POST['_regions'];
if(!empty($woocommerce_textarea))
update_post_meta($post_id, '_regions', esc_html($woocommerce_textarea));
}
下面的代碼進入模板.php文件,其中假設發生條件執行。我可以想象,如果您在此處添加購物車循環(添加到購物車按鈕),它將允許您控制在某些國家/地區可以購買哪些產品。以產品爲基礎。
<?php global $woocommerce;
// Get restriction type (deny or allow) for current product
$restriction_type = get_post_meta($post->ID, '_restriction-type', true);
// Get region(s) the above restriction type is applied to
$regions = get_post_meta($post->ID, '_regions', true);
// Turns this string into an array.
$regions_array = (explode(',', str_replace('/\s+/','', $regions)));
// Get users current IP location from WooCommerce
$base_country = (..... YOU NEED TO GET THE USER LOCATION ISO COUNTRY CODE ......)
// If user's current IP location is either allowed, is not denied or is not set in the region settings = success
if($restriction_type == 'allow' && in_array($base_country , $regions_array) || $restriction_type == 'deny' && !in_array($base_country , $regions_array) || $restriction_type == '' || $regions == '') {
if ($restriction_type == '' || $regions == '') {
// Code to execute on success if a product is not set (NOTE: It will not be restricted)
echo('This product\'s region control has not been set, you can set it in WP Admin');
}
// Code to execute on success if a products region settings are set to allow access
echo('YOU ARE IN');
} else {
// Code to execute when region is restricted
echo(' you are restricted,');
}
?>
你自己回答了你的問題。 –
我的問題是這樣的事情,插件,功能或片段存在,我可以在哪裏得到它? – TafMak
Taf(OP),你有沒有繼續發展呢?我正在尋找類似的功能,並且想知道你的解決方案在哪裏。 – inspirednz