仅向管理员添加运输方式到 Woocommerce 订单页面
Adding shipping methods to Woocommerce Order Page for Admin only
我需要在我们的 WooCommerce 编辑订单 页面中添加一些送货方式。
这将仅供管理员内部使用,因此客户应该看不到这些选项。
是否有我们可以添加的钩子或自定义代码来填充送货方式下拉列表。
不需要额外的功能(无税、费率等)
我认为有更多方法可以实现您的需求。这将是一个解决方案:
用户角色的运送方式
你可以通过用户权限解决这个问题。只有角色 "administrator" 的用户才能使用送货方式 "usps"。
简单的方法是使用像这样的免费插件:
https://wordpress.org/plugins/user-role-editor/
在此插件中,您可以 select 您的用户角色并单击 "Add capability" 并希望找到您的送货方式。
还有完全适合您的问题的解决方案:
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/
示例中的发货方式为"local pickup":
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()){ ... }
希望对您有所帮助!
我需要在我们的 WooCommerce 编辑订单 页面中添加一些送货方式。
这将仅供管理员内部使用,因此客户应该看不到这些选项。
是否有我们可以添加的钩子或自定义代码来填充送货方式下拉列表。
不需要额外的功能(无税、费率等)
我认为有更多方法可以实现您的需求。这将是一个解决方案:
用户角色的运送方式
你可以通过用户权限解决这个问题。只有角色 "administrator" 的用户才能使用送货方式 "usps"。
简单的方法是使用像这样的免费插件:
https://wordpress.org/plugins/user-role-editor/
在此插件中,您可以 select 您的用户角色并单击 "Add capability" 并希望找到您的送货方式。
还有完全适合您的问题的解决方案:
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/
示例中的发货方式为"local pickup":
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()){ ... }
希望对您有所帮助!