web-dev-qa-db-fra.com

Woocommerce, obtenez l'id du produit actuel

Je travaille actuellement sur un thème WooCommerce et j'essaie d'ajouter une barre latérale à la page de détail du produit.

J'ai pu obtenir la barre latérale ajoutée (en particulier celle-ci: http://woocommerce.wp-a2z.org/oik_file/templatescontent-widget-product-php/ )

Maintenant, j'essaye de comprendre comment ajouter une classe "active" au produit actuellement sélectionné et je n'arrive pas à comprendre.

En d'autres termes, comment puis-je faire quelque chose dans le sens où si l'ID de produit actuel est égal à l'ID de produit dans la barre latérale, ajoutez class = "active" au li?

J'ai fait de nombreuses recherches et je n'ai rien trouvé d'utile, alors je me tourne vers vous.

Toute aide grandement appréciée !!

24
shparkison

Mise à jour 2017:

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

Woocommerce n'aime pas que vous accédiez directement à ces variables. Cela éliminera tous les avertissements de woocommerce si votre wp_debug est vrai.

69
Samyer

Si la requête n'a pas été modifiée par un plugin pour une raison quelconque, vous devriez pouvoir obtenir "l'identifiant" d'une seule page

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

OR

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

Récupérez l'ID de l'élément en cours dans la boucle WordPress.

echo get_the_ID(); 

fonctionne donc aussi pour l'identifiant du produit. #tested # woo-commerce 

2
R T

Enregistrez l'ID du produit actuel avant d'entrer dans votre boucle:

$current_product = $product->id;

Ensuite, dans votre boucle pour votre barre latérale, utilisez à nouveau $ product-> id pour comparer: 

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

vous pouvez interroger woocommerce par programmationvous pouvez même ajouter un produit à votre panier . Je suis sûr que vous pouvez comprendre comment interagir avec le panier woocommerce une fois que vous avez lu le code . comment interagir avec woocommerce cart par programme

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

<?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