Woocommerce,获取当前的产品ID

时间:2014-12-09 18:14:20

标签: wordpress woocommerce product

我目前正在研究WooCommerce主题并尝试在产品详细信息页面中添加侧边栏。

我已经能够添加侧栏(具体来说,这个:http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/

现在,我正在试图弄清楚如何在当前选择的产品中添加一类“有效”,似乎无法弄明白?

换句话说,如果当前产品ID等于侧边栏中的产品ID,我该怎么做呢?添加class =“active”到li?

我进行了大量搜索,但未能提出任何有用的信息,所以我要转到这里。

任何帮助都非常感谢!!

6 个答案:

答案 0 :(得分:79)

2017年更新:

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

Woocommerce并不像您直接访问这些变量。如果你的wp_debug是真的,这将摆脱woocommerce的任何警告。

答案 1 :(得分:19)

如果查询由于某种原因未被插件修改,您应该能够获得单个产品页面" id"通过

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

OR

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

编辑:从WooCommerce 3.0开始,这需要

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

答案 2 :(得分:7)

自WooCommerce 2.2起,您就可以简单地使用wc_get_product方法。作为参数,您可以传递ID,或者如果您已经在循环中,则可以将其保留为空。

wc_get_product()->get_id();

或2行

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

答案 3 :(得分:3)

检索WordPress循环中当前项目的ID。

echo get_the_ID(); 

因此也适用于产品ID。 #tested#woo-commerce

答案 4 :(得分:1)

在进入循环之前保存当前产品ID:

$current_product = $product->id;

然后在您的侧边栏循环中,再次使用$ product-> id进行比较:

 <li><a <? if ($product->id == $current_product) { echo "class='on'"; }?> href="<?=get_permalink();?>"><?=the_title();?></a></li>

答案 5 :(得分:0)

你可以以编程方式查询woocommerce 您甚至可以将产品添加到购物车中。 一旦你阅读了代码,我相信你可以弄清楚如何与woocommerce购物车互动。 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);
            }
        }
    }
}