【问题标题】:Adding shipping methods to Woocommerce Order Page for Admin only仅向管理员添加运输方式到 Woocommerce 订单页面
【发布时间】:2020-05-20 15:29:11
【问题描述】:

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

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

是否有我们可以添加的挂钩或自定义代码来填充运输方式下拉菜单。

不需要额外的功能(无税、税率等)

【问题讨论】:

  • 您是如何在订单页面中获得该下拉菜单的?我正在尝试在该页面中提供运输方式,但我找不到任何关于它的信息...

标签: php wordpress woocommerce hook shipping


【解决方案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()){ ... }

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2019-05-25
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多