簡體   English   中英

將運輸方式添加到 Woocommerce 訂單頁面僅適用於管理員

[英]Adding shipping methods to Woocommerce Order Page for Admin only

我需要在我們的 WooCommerce編輯訂單頁面中添加一些運輸方式。

這將僅供管理員內部使用,因此客戶應該無法看到這些選項。

是否有我們可以添加的鈎子或自定義代碼來填充運輸方式下拉列表。

不需要額外的功能(無稅、稅率等)

截屏

我認為有更多的方法來實現你正在尋找的東西。 這將是一種解決方案:

用戶角色的運送方式

您可以使用用戶權限解決此問題。 只有“管理員”角色的用戶才能使用“usps”運輸方式。

簡單的方法是使用一個免費的插件,如:

https://wordpress.org/plugins/user-role-editor/

在這個插件中,您可以 select 您的用戶角色並單擊“添加功能”,希望能找到您的運輸方式。

也有針對您的問題的解決方案:

https://wordpress.org/plugins/user-role-based-shipping-method/還有很多插件不是免費的,但可能會提供更多的舒適和支持。


更難的方法是編寫 function 並使用 woocommerce 和 wordpress 鈎子和過濾器。 這有點復雜,但我會給你一些開始。

在 wordpress 中,用戶角色是一組能力。

您可以像這樣在 wordpress 中獲取角色 object :

$administrator_role = get_role( 'administrator' );

您可以添加和刪除它們:

$administrator_role->add_cap( 'custom_capability' );
$administrator_role->remove_cap( 'custom_capability' );

在此處閱讀有關此內容的內容: https://developer.wordpress.org/plugins/users/roles-and-capabilities/


幸運的是,有一個 woocommerce 濾波器可供使用。 也許你應該先看看這個,這可能會完全解決你的問題:

https://docs.woocommerce.com/document/hide-other-shipping-methods-when-free-shipping-is-available/

如您所見,您想要的過濾器是:

add_filter('woocommerce_package_rates', 'your_function', 30, 2);

http://hookr.io/filters/woocommerce_package_rates/

這是一個教程,如何使用它:

https://trackitweb.com/woocommerce-hide-a-shipping-method-based-on-user-role/

示例中的運輸方式稱為“本地取貨”:

add_filter('woocommerce_package_rates', 'hide_local_pickup_based_on_user_role', 30, 2);

function hide_local_pickup_based_on_user_role($rates, $package) {
  foreach($rates as $rate_key => $rate){
    if($rate->method_id === 'local_pickup'){
      if(!current_user_can('local_pickup_allowed') || !is_user_logged_in()){
        unset($rates[$rate_key]);
        break;
      }
    }
  }
  return $rates;

這是您檢查角色能力(和登錄)的部分,為沒有此能力的用戶取消設置運輸方式:

if(!current_user_can('local_pickup_allowed') || !is_user_logged_in()){ ... }

我希望這可以幫助你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM