Заменить изображение продукта заполнителем на основе ролей пользователей в WooCommerce - PullRequest
1 голос
/ 08 апреля 2019

В 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 Ответ

2 голосов
/ 08 апреля 2019

Обновлено: Следующий код замены будет обрабатывать все типы продуктов (даже переменные продукты с их вариациями):

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 вашей активной дочерней темы (или активной темы). Проверено и работает.

...