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: )
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 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!!
7 Answers
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.
2If 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->IDOR
global $product;
$id = $product->id;EDIT: As of WooCommerce 3.0 this needs to be
global $product;
$id = $product->get_id(); 8 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(); Retrieve the ID of the current item in the WordPress Loop.
echo get_the_ID(); hence works for the product id too. #tested #woo-commerce
2The correct method is:
global $product;
$id = $product->get_id(); 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> 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); } } }
}