programing

Woocommerce, 현재 제품 ID 가져오기

skycolor 2023. 3. 13. 20:19
반응형

Woocommerce, 현재 제품 ID 가져오기

현재 WooCommerce 테마를 작업 중이며 제품 상세 페이지에 사이드바를 추가하려고 합니다.

사이드바를 추가할 수 있었습니다(구체적으로는 http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/)).

현재 선택된 제품에 "액티브" 클래스를 추가하는 방법을 알아보려고 하는데 알 수 없는 것 같습니다.

즉, 현재 제품 ID가 사이드바의 제품 ID와 동일한 경우 li에 class="active"를 추가하는 방법은 무엇입니까?

수없이 찾아봤지만 쓸만한 게 없어서 여기로 돌아왔어요

아무쪼록 잘 부탁드립니다!!

2017년 업데이트 - WooCommerce 3 이후:

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

Woocommerce는 이러한 변수에 직접 액세스하는 것을 좋아하지 않습니다.그러면 wp_debug가 true일 경우 woocommerce에서 경고가 제거됩니다.

어떤 이유로 인해 플러그인에 의해 쿼리가 수정되지 않은 경우 다음 방법으로 단일 제품 페이지의 "ID"를 얻을 수 있습니다.

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행의 OR

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

WordPress Loop에서 현재 항목의 ID를 검색합니다.

echo get_the_ID(); 

따라서 제품 ID에도 사용할 수 있습니다.#commerce #woo-commerce

올바른 방법은 다음과 같습니다.

global $product;

$id = $product->get_id();

루프를 입력하기 전에 현재 제품 ID를 저장하십시오.

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

언급URL : https://stackoverflow.com/questions/27385920/woocommerce-get-current-product-id

반응형