現在、WooCommerceテーマに取り組んでおり、製品の詳細ページにサイドバーを追加しようとしています。
サイドバーを追加することができました(具体的には、この1つ: http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/ )
今、私は現在選択されている製品に「アクティブ」のクラスを追加する方法を理解しようとしていますが、それを理解できないようですか?
言い換えれば、現在の製品IDがサイドバーの製品IDと等しい場合、class = "active"をliに追加するという線に沿って何かを行うにはどうすればよいですか?
私は何度も検索を行ってきましたが、有用なものを思い付くことができなかったので、ここに戻ります。
どんな助けも大歓迎です!!
2017アップデート:
global $product;
$id = $product->get_id();
Woocommerceは、これらの変数に直接アクセスすることを嫌います。 wp_debugがtrueの場合、これはwoocommerceからの警告を取り除きます。
何らかの理由でプラグインによってクエリが変更されていない場合、単一の製品ページの「id」を取得できるはずです
global $post;
$id = $post->ID
OR
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();
WordPressループ内の現在のアイテムのIDを取得します。
echo get_the_ID();
したがって、製品IDでも機能します。 #テスト済み#woo-commerce
ループに入る前に現在の製品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);
}
}
}
}