根据WooCommerce中的用户角色,用占位符替换产品图片

时间:2019-04-08 08:53:51

标签: php wordpress woocommerce product user-roles

在WooCommerce中,我使用用户角色定义每个用户角色可以看到的内容。如果用户是“客户”或“管理员”,则可以看到产品图像,否则可以看到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中选择产品变体?

1 个答案:

答案 0 :(得分:2)

更新:以下替换代码将处理所有产品类型(甚至包括具有其变体的可变产品):

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文件中。经过测试,可以正常工作。