Сделайте так, чтобы is_purchasable hook работал с вариациями и тегами товаров в Woocommerce - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь не допустить, чтобы посетители покупали определенные товары по тегам товаров.

Я использую 'woocommerce_is_purchasable' фильтр woocommerce, но он не работает с переменными продуктами.

Это мой код:

    function remove_add_to_cart_for_tag_id ( $purchasable, $product ){

    if( $product->get_tag_ids() == array(181)) {

      $purchasable = false;

    } else {
      return $purchasable;
    }

    if ( $purchasable && $product->is_type( 'variation' ) ) {
        $purchasable = $product->parent->is_purchasable();
    }

    return $purchasable;

}
add_filter( 'woocommerce_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );
add_filter( 'woocommerce_variation_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );

Я основал свой код на этом примере: Получите хук is_purchasable, работающий также для вариантов продукта Woocommerce

Любой комментарий хорошо принят, заранее спасибо.

1 Ответ

0 голосов
/ 05 ноября 2018

В вашем коде есть ошибки и ошибки. Вместо этого попробуйте следующее (чтобы оно работало и с вариациями продуктов) :

add_filter( 'woocommerce_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );
add_filter( 'woocommerce_variation_is_purchasable', 'remove_add_to_cart_for_tag_id', 10, 2 );
function remove_add_to_cart_for_tag_id ( $purchasable, $product ){
    // For product variations (from variable products)
    if ( $product->is_type('variation') ){
        $parent = wc_get_product( $product->get_parent_id() );
        $tag_ids = $parent->get_tag_ids(); 
    } 
    // For other product types
    else {
        $tag_ids = $product->get_tag_ids();
    }

    if( in_array( 181, $tag_ids ) ) {
        $purchasable = false;
    }

    return $purchasable;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы). Это должно работать сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...