Как проверить, есть ли переменный идентификатор продукта в корзине woocommerce? - PullRequest
0 голосов
/ 19 июня 2020

Итак, я написал этот слишком сложный (потому что я только начал использовать php несколько дней go) код в php, чтобы он просто добавлял настраиваемый флажок на странице оформления заказа, когда определенные продукты находятся в корзине, но по какой-то причине он работает только для простых продуктов, а мне он нужен для переменных продуктов. Я пробовал использовать идентификаторы вариантов, а также идентификаторы продуктов. Подскажите, где я ошибаюсь?

add_action( 'woocommerce_review_order_before_submit', 'webroom_check_if_product_in_cart' );
function webroom_check_if_product_in_cart() {
    $product_id1 = 9145; // CHANGE THIS WITH YOUR PRODUCT ID 9145      scratch-8974
    $product_id2 = 9151; // CHANGE THIS WITH YOUR PRODUCT ID
    $product_id3 = 9152; // CHANGE THIS WITH YOUR PRODUCT ID
    $product_id4 = 9153; // CHANGE THIS WITH YOUR PRODUCT ID
    $product_id5 = 9155; // CHANGE THIS WITH YOUR PRODUCT ID
    $product_id6 = 9156; // CHANGE THIS WITH YOUR PRODUCT ID
    $product_cart_id1 = WC()->cart->generate_cart_id( $product_id1 );
    $product_cart_id2 = WC()->cart->generate_cart_id( $product_id2 );
    $product_cart_id3 = WC()->cart->generate_cart_id( $product_id3 );
    $product_cart_id4 = WC()->cart->generate_cart_id( $product_id4 );
    $product_cart_id5 = WC()->cart->generate_cart_id( $product_id5 );
    $product_cart_id6 = WC()->cart->generate_cart_id( $product_id6 );
    $in_cart1 = WC()->cart->find_product_in_cart( $product_cart_id1 );
    $in_cart2 = WC()->cart->find_product_in_cart( $product_cart_id2 );
    $in_cart3 = WC()->cart->find_product_in_cart( $product_cart_id3 );
    $in_cart4 = WC()->cart->find_product_in_cart( $product_cart_id4 );
    $in_cart5 = WC()->cart->find_product_in_cart( $product_cart_id5 );
    $in_cart6 = WC()->cart->find_product_in_cart( $product_cart_id6 );
    if ( $in_cart1 || $in_cart2 || $in_cart3 || $in_cart4 || $in_cart5 || $in_cart6) { 
       echo add_my_checkout_tickbox();
   }
}

Финальная версия:

add_action( 'woocommerce_review_order_before_submit', 'add_custom_checkbox' );
function add_custom_checkbox() {
    ## ----- CHECK IF CERTAIN PRODUCTS (COULD ALSO BE VARIABLE PRODUCTS) ARE IN CART ----- ##

    $product_ids = array (9145, 9151, 9152, 9153, 9155, 9156); // Search for this products (PARENT ID)

    // Loop though cart items searching for the defined products
    foreach( WC()->cart->get_cart() as $cart_item ) {
        // Product id
        $product_id = $cart_item['product_id'];

        // Display checkbox if product found in cart
        if ( in_array( $product_id, $product_ids) ) {
            echo add_my_checkout_tickbox();
        }
    }
}

1 Ответ

0 голосов
/ 22 июня 2020

Это последняя версия кода после прочтения ссылок, предоставленных '7uc1f3r' выше. Спасибо за помощь.

add_action( 'woocommerce_review_order_before_submit', 'add_custom_checkbox' );
function add_custom_checkbox() {
    ## ----- CHECK IF CERTAIN PRODUCTS (COULD ALSO BE VARIABLE PRODUCTS) ARE IN CART ----- ##

    $product_ids = array (9145, 9151, 9152, 9153, 9155, 9156); // Search for this products (PARENT ID)

    // Loop though cart items searching for the defined products
    foreach( WC()->cart->get_cart() as $cart_item ) {
        // Product id
        $product_id = $cart_item['product_id'];

        // Display checkbox if product found in cart
        if ( in_array( $product_id, $product_ids) ) {
            echo add_my_checkout_tickbox();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...