根据 WooCommerce 中的用户角色用占位符替换产品图片
Replace product image by a placeholder based on user roles in WooCommerce
在 WooCommerce 中,我使用用户角色来定义每个用户角色可以看到的内容。如果用户是 "customer" 或 "administrator",他能够看到产品图片,否则他会看到 WooCommerce 默认占位符图片。
为此,我使用以下代码:
function woocommerce_product_get_image_id_callback( $value ) {
global $current_user;
if ( in_array( 'customer', (array) $current_user->roles )|| in_array( 'administrator', (array) $current_user->roles )) {
return $value;
} else {
return false;
}
}
add_filter( 'woocommerce_product_get_image_id', 'woocommerce_product_get_image_id_callback', 10, 1 );
它适用于简单产品,但不适用于可变产品:
在未选择变体的可变产品上显示占位符,但当用户选择任何变体时显示图像。
有人可以帮忙解决这个问题吗?也许在 if 中禁用选择产品变体?
更新:以下替换代码将处理所有产品类型(甚至是可变产品及其变体):
add_filter( 'woocommerce_product_variation_get_image_id', 'woocommerce_product_get_image_id_callback', 10, 2 );
add_filter( 'woocommerce_product_get_image_id', 'woocommerce_product_get_image_id_callback', 10, 2 );
function woocommerce_product_get_image_id_callback( $image_id, $product ) {
if ( ! ( current_user_can('customer') || current_user_can('administrator') ) ) {
$image_id = '';
}
return $image_id;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
在 WooCommerce 中,我使用用户角色来定义每个用户角色可以看到的内容。如果用户是 "customer" 或 "administrator",他能够看到产品图片,否则他会看到 WooCommerce 默认占位符图片。
为此,我使用以下代码:
function woocommerce_product_get_image_id_callback( $value ) {
global $current_user;
if ( in_array( 'customer', (array) $current_user->roles )|| in_array( 'administrator', (array) $current_user->roles )) {
return $value;
} else {
return false;
}
}
add_filter( 'woocommerce_product_get_image_id', 'woocommerce_product_get_image_id_callback', 10, 1 );
它适用于简单产品,但不适用于可变产品:
在未选择变体的可变产品上显示占位符,但当用户选择任何变体时显示图像。
有人可以帮忙解决这个问题吗?也许在 if 中禁用选择产品变体?
更新:以下替换代码将处理所有产品类型(甚至是可变产品及其变体):
add_filter( 'woocommerce_product_variation_get_image_id', 'woocommerce_product_get_image_id_callback', 10, 2 );
add_filter( 'woocommerce_product_get_image_id', 'woocommerce_product_get_image_id_callback', 10, 2 );
function woocommerce_product_get_image_id_callback( $image_id, $product ) {
if ( ! ( current_user_can('customer') || current_user_can('administrator') ) ) {
$image_id = '';
}
return $image_id;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。