Php WooCommerce产品:仅允许特定用户角色的延期订单
我想允许特定客户角色的延期订单。 我写的代码是:Php WooCommerce产品:仅允许特定用户角色的延期订单,php,wordpress,woocommerce,product,product-variations,Php,Wordpress,Woocommerce,Product,Product Variations,我想允许特定客户角色的延期订单。 我写的代码是: // BackOrder Allow Part #1 add_filter( 'woocommerce_product_backorders_allowed', 'woocommerce_product_backorders_allowed', 10, 3 ); function woocommerce_product_backorders_allowed( $backorder_allowed, $product_id, $product ){
// BackOrder Allow Part #1
add_filter( 'woocommerce_product_backorders_allowed', 'woocommerce_product_backorders_allowed', 10, 3 );
function woocommerce_product_backorders_allowed( $backorder_allowed, $product_id, $product ){
if ( current_user_can('administrator') ) {
$backorder_allowed = true;
} else {
$backorder_allowed = false;
}
return $backorder_allowed;
}
// BackOrder Allow Part #2
add_filter( 'woocommerce_product_get_stock_status', 'woocommerce_product_get_stock_status', 10, 2 );
function woocommerce_product_get_stock_status( $stock_status, $product ) {
if ( current_user_can('administrator') ) {
return 'onbackorder';
}
else {
return 'outofstock';
}
}
似乎这个结果只适用于简单的产品。
如何为其他产品类型工作。
我需要为简单,变量和yith捆绑工作。
任何帮助都将不胜感激!
谢谢 代码中有一些错误和遗漏。请改用以下方法:
// Custom conditional function targeting specific user roles
function is_allowed_user_role() {
$targeted_roles = array('administrator', 'shop_manager'); // Here define your targeted user roles
return (bool) array_intersect( wp_get_current_user()->roles, $targeted_roles );
}
add_filter( 'woocommerce_product_get_stock_status', 'filter_product_stock_status' );
add_filter( 'woocommerce_product_variation_get_stock_status', 'filter_product_stock_status' );
function filter_product_stock_status( $stock_status ) {
if ( ! is_allowed_user_role() && 'onbackorder' === $stock_status ) {
$stock_status = 'outofstock';
}
return $stock_status;
}
add_filter( 'woocommerce_product_get_backorders', 'filter_product_get_backorders' );
add_filter( 'woocommerce_product_variation_get_backorders', 'filter_product_get_backorders' );
function filter_product_get_backorders( $backorders ){
return is_allowed_user_role() ? $backorders : 'no';
}
add_filter( 'woocommerce_product_backorders_allowed', 'filter_product_backorders_allowed', 10, 3 );
function filter_product_backorders_allowed( $allowed, $product_id, $product ){
return is_allowed_user_role() ? $allowed : false;
}
代码进入活动子主题(或活动主题)的functions.php文件。已测试并正常工作。我在第二个功能上做了更改。如果缺货,如qty=0或stockstatus为缺货,则允许缺货
// Custom conditional fuction to target specific user roles
function is_allowed_user_role() {
$targeted_roles = array('administrator', 'shop_manager'); // Here define your targeted user roles
return (bool) array_intersect( wp_get_current_user()->roles, $targeted_roles );
}
add_filter( 'woocommerce_product_get_stock_status', 'filter_product_stock_status' );
add_filter( 'woocommerce_product_variation_get_stock_status', 'filter_product_stock_status' );
function filter_product_stock_status( $stock_status ) {
if ( is_allowed_user_role() && 'outofstock' === $stock_status ) {
$stock_status = 'onbackorder';
}
return $stock_status;
}
add_filter( 'woocommerce_product_get_backorders', 'filter_product_get_backorders' );
add_filter( 'woocommerce_product_variation_get_backorders', 'filter_product_get_backorders' );
function filter_product_get_backorders( $backorders ){
return is_allowed_user_role() ? $backorders : 'no';
}
add_filter( 'woocommerce_product_backorders_allowed', 'filter_product_backorders_allowed', 10, 3 );
function filter_product_backorders_allowed( $allowed, $product_id, $product ){
return is_allowed_user_role() ? $allowed : false;
}
谢谢,但不要给出结果。如果我们没有给出简单和可变的结果,也许我们遗漏了什么?@Bаааааааааааааааааа。在最新版本下测试。您使用的是什么主题?我在几个不同主题的网站上进行了测试,比如astra、storefront、last-Woo版本,siri做了一点修改,功能给了我结果!