仅将运输方式添加到Woocommerce订单页面,仅供管理员使用

问题描述 投票:0回答:1

我需要在我们的WooCommerce 编辑订单页面上添加一些送货方式。

这将仅供管理员内部使用,因此客户不应看到这些选项。

是否可以添加一个挂钩或自定义代码来填充运输方法下拉列表。

不需要其他功能(无需税,费率等)

Screenshot

php wordpress woocommerce hook shipping
1个回答
-1
投票

我认为有更多的方法可以实现您想要的。这将是一种解决方案:

用户角色的运送方法

您可以通过用户权限解决此问题。只有角色为“管理员”的用户才可以使用运输方式“ usps”。

简单的方法是使用免费的插件,例如:

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

在此插件中,您可以选择您的用户角色,然后单击“添加功能”,并希望找到您的送货方式。

也有针对您问题的解决方案:

https://wordpress.org/plugins/user-role-based-shipping-method/还有很多不是免费的插件,但可能会提供更多的舒适度和支持。


更难的方法是编写一个函数,并利用woocommerce和wordpress钩子和过滤器。这有点复杂,但是我先给你一些东西。

在wordpress中,用户角色是一组功能。

您可以像这样在wordpress中获得角色对象:

$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()){ ... }

我希望这可以帮助您!

© www.soinside.com 2019 - 2024. All rights reserved.