2014-01-25 144 views
2

在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,'); 

          } 



        ?> 
+0

你自己回答了你的問題。 –

+0

我的問題是這樣的事情,插件,功能或片段存在,我可以在哪裏得到它? – TafMak

+0

Taf(OP),你有沒有繼續發展呢?我正在尋找類似的功能,並且想知道你的解決方案在哪裏。 – inspirednz

回答

1

我不知道,如果你看到/嘗試這樣做,但根據http://docs.woothemes.com/document/configuring-woocommerce-settings/你可以做你所要求的東西。

要配置您的店鋪,請轉到WooCommerce>設置。然後瀏覽以下內容以獲取有關WooCommerce選項的更多信息。

允許各國

在這裏你可以選擇是否要出售/船到過的國家,或 有選擇的幾個 - 有用的,如果只交易自己的國家或地區內 實例。您允許的國家以外的客戶將無法登錄 。

特定國家

定義您願意出售/運送到的國家/地區。您必須將 「允許的國家/地區」選項設置爲「特定國家/地區」。

+0

我知道這一點,但 1)這是一個網站的設置,它會影響所有產品。 2)WooCommerce沒有地理編碼,因此它依賴用戶提供的信息來確定位置。此設置依賴於用戶的帳單地址。 上面的插件應該實現的是: 1)使用地理編碼來確定用戶位置。 2)允許網站管理員爲每個產品設置允許的國家,而不是整個網站。 – TafMak

+0

3)當用戶想要購買的產品受限於其國家(用戶無法購買產品)時,禁用添加到購物車按鈕或任何其他模板功能,這對於位置許可產品(如電影下載)非常理想。 4)它與數字工作下載也不依賴送貨地址。 – TafMak