Woocommerce, get current product id

I’m currently working on a WooCommerce theme and attempting to add a sidebar to the product detail page.

I’ve been able to get the sidebar added (specifically, this one: http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/)

Read More

Now, I’m trying to figure out how to add a class of “active” to the currently selected product and can’t seem to figure it out?

In other words, how do I do something along the lines of if the current product id is equal to the product id in the sidebar add class=”active” to the li?

I’ve made numerous searches and haven’t been able to come up with anything useful, so I’m turning here.

Any help greatly appreciated!!

Related posts

Leave a Reply

7 comments

  1. 2017 Update – since WooCommerce 3:

    global $product;
    $id = $product->get_id();
    

    Woocommerce doesn’t like you accessing those variables directly. This will get rid of any warnings from woocommerce if your wp_debug is true.

  2. If the query hasn’t been modified by a plugin for some reason, you should be able to get a single product page’s “id” via

    global $post;
    $id = $post->ID
    

    OR

    global $product;
    $id = $product->id;
    

    EDIT: As of WooCommerce 3.0 this needs to be

    global $product;
    $id = $product->get_id();
    
  3. Since WooCommerce 2.2 you are able to simply use the wc_get_product Method. As an argument you can pass the ID or simply leave it empty if you’re already in the loop.

    wc_get_product()->get_id();
    

    OR with 2 lines

    $product = wc_get_product();
    $id = $product->get_id();
    
  4. Save the current product id before entering your loop:

    $current_product = $product->id;
    

    Then in your loop for your sidebar, use $product->id again to compare:

     <li><a <? if ($product->id == $current_product) { echo "class='on'"; }?> href="<?=get_permalink();?>"><?=the_title();?></a></li>
    
  5. your can query woocommerce programatically
    you can even add a product to your shopping cart.
    I’m sure you can figure out how to interact with woocommerce cart once you read the code.
    how to interact with woocommerce cart programatically

    ====================================

    <?php
    
    add_action('wp_loaded', 'add_product_to_cart');
    function add_product_to_cart()
    {
        global $wpdb;
    
        if (!is_admin()) {
    
    
            $product_id = wc_get_product_id_by_sku('L3-670115');
    
            $found = false;
    
            if (is_user_logged_in()) {
                if (sizeof(WC()->cart->get_cart()) > 0) {
                    foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
                        $_product = $values['data'];
                        if ($_product->get_id() == $product_id)
                            WC()->cart->remove_cart_item($cart_item_key);
                    }
                }
            } else {
                if (sizeof(WC()->cart->get_cart()) > 0) {
                    foreach (WC()->cart->get_cart() as $cart_item_key => $values) {
                        $_product = $values['data'];
                        if ($_product->id == $product_id)
                            $found = true;
                    }
                    // if product not found, add it
                    if (!$found)
                        WC()->cart->add_to_cart($product_id);
                } else {
                    // if no products in cart, add it
                    WC()->cart->add_to_cart($product_id);
                }
            }
        }
    }