Подтвердить что ты не робот

Woocommerce, получить актуальный идентификатор продукта

В настоящее время я работаю над темой WooCommerce и пытаюсь добавить боковую панель к странице сведений о продукте.

Мне удалось добавить боковую панель (в частности, этот: http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/)

Теперь, я пытаюсь понять, как добавить класс "active" к выбранному в данный момент продукту и не может показаться, что он понял?

Другими словами, как мне сделать что-то по строкам, если текущий идентификатор продукта равен идентификатору продукта на боковой панели, добавьте class= "active" в li?

Я сделал многочисленные поиски и не смог придумать что-нибудь полезное, поэтому я перехожу сюда.

Любая помощь очень ценится!!

4b9b3361

Ответ 1

2017 Обновление:

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

Woocommerce не любит, чтобы вы напрямую обращались к этим переменным. Это избавит вас от любых предупреждений из woocommerce, если ваш wp_debug прав.

Ответ 2

Если запрос по какой-либо причине не был изменен плагином, вы сможете получить один "идентификатор" страницы продукта через

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

ИЛИ ЖЕ

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

РЕДАКТИРОВАТЬ: Начиная с WooCommerce 3.0 это должно быть

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

Ответ 3

Начиная с WooCommerce 2.2 вы можете просто использовать метод wc_get_product. В качестве аргумента вы можете передать ID или просто оставить его пустым, если вы уже в цикле.

wc_get_product()->get_id();

ИЛИ с 2 линиями

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

Ответ 4

Получить идентификатор текущего элемента в Loop WordPress.

echo get_the_ID(); 

поэтому работает и для идентификатора продукта. #tested # woo-commerce

Ответ 5

Сохраните текущий идентификатор продукта перед входом в цикл:

$current_product = $product->id;

Затем в вашем цикле для вашей боковой панели снова используйте $product- > id для сравнения:

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

Ответ 6

Вы можете запрашивать woocommerce программно, вы даже можете добавить товар в корзину. Я уверен, что вы сможете понять, как взаимодействовать с корзиной woocommerce после прочтения кода. как взаимодействовать с корзиной woocommerce программно

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

<?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);
            }
        }
    }
}