Ответ 1
2017 Обновление:
global $product;
$id = $product->get_id();
Woocommerce не любит, чтобы вы напрямую обращались к этим переменным. Это избавит вас от любых предупреждений из woocommerce, если ваш wp_debug прав.
В настоящее время я работаю над темой WooCommerce и пытаюсь добавить боковую панель к странице сведений о продукте.
Мне удалось добавить боковую панель (в частности, этот: http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/)
Теперь, я пытаюсь понять, как добавить класс "active" к выбранному в данный момент продукту и не может показаться, что он понял?
Другими словами, как мне сделать что-то по строкам, если текущий идентификатор продукта равен идентификатору продукта на боковой панели, добавьте class= "active" в li?
Я сделал многочисленные поиски и не смог придумать что-нибудь полезное, поэтому я перехожу сюда.
Любая помощь очень ценится!!
2017 Обновление:
global $product;
$id = $product->get_id();
Woocommerce не любит, чтобы вы напрямую обращались к этим переменным. Это избавит вас от любых предупреждений из woocommerce, если ваш wp_debug прав.
Если запрос по какой-либо причине не был изменен плагином, вы сможете получить один "идентификатор" страницы продукта через
global $post;
$id = $post->ID
ИЛИ ЖЕ
global $product;
$id = $product->id;
РЕДАКТИРОВАТЬ: Начиная с WooCommerce 3.0 это должно быть
global $product;
$id = $product->get_id();
Начиная с WooCommerce 2.2
вы можете просто использовать метод wc_get_product
. В качестве аргумента вы можете передать ID
или просто оставить его пустым, если вы уже в цикле.
wc_get_product()->get_id();
ИЛИ с 2 линиями
$product = wc_get_product();
$id = $product->get_id();
Получить идентификатор текущего элемента в Loop WordPress.
echo get_the_ID();
поэтому работает и для идентификатора продукта. #tested # woo-commerce
Сохраните текущий идентификатор продукта перед входом в цикл:
$current_product = $product->id;
Затем в вашем цикле для вашей боковой панели снова используйте $product- > id для сравнения:
<li><a <? if ($product->id == $current_product) { echo "class='on'"; }?> href="<?=get_permalink();?>"><?=the_title();?></a></li>
Вы можете запрашивать 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);
}
}
}
}