web-dev-qa-db-ja.com

Woocommerce、現在の製品IDを取得

現在、WooCommerceテーマに取り組んでおり、製品の詳細ページにサイドバーを追加しようとしています。

サイドバーを追加することができました(具体的には、この1つ: http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/

今、私は現在選択されている製品に「アクティブ」のクラスを追加する方法を理解しようとしていますが、それを理解できないようですか?

言い換えれば、現在の製品IDがサイドバーの製品IDと等しい場合、class = "active"をliに追加するという線に沿って何かを行うにはどうすればよいですか?

私は何度も検索を行ってきましたが、有用なものを思い付くことができなかったので、ここに戻ります。

どんな助けも大歓迎です!!

36
shparkison

2017アップデート:

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

Woocommerceは、これらの変数に直接アクセスすることを嫌います。 wp_debugがtrueの場合、これはwoocommerceからの警告を取り除きます。

85
Samyer

何らかの理由でプラグインによってクエリが変更されていない場合、単一の製品ページの「id」を取得できるはずです

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

OR

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

編集:WooCommerce 3.0の時点で、これはする必要があります

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

WooCommerce 2.2からは、単にwc_get_productメソッドを使用できます。引数として、IDを渡すか、既にループに入っている場合は単に空のままにしておくことができます。

wc_get_product()->get_id();

または2行で

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

WordPressループ内の現在のアイテムのIDを取得します。

echo get_the_ID(); 

したがって、製品IDでも機能します。 #テスト済み#woo-commerce

3
R T

ループに入る前に現在の製品IDを保存します。

$current_product = $product->id;

次に、サイドバーのループで、もう一度$ product-> idを使用して比較します。

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

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);
            }
        }
    }
}
0
Hugo R