Personnalisez les badges pour les identifiants de produits spécifiques sur les éléments de la boucle d'archive WooCommerce
P粉087074897
P粉087074897 2024-02-17 13:54:07
0
1
386

J'essaie d'afficher un badge avec le texte « EXCLUSIF » sur un produit spécifique dans la page du magasin ou dans les archives de catégorie ou chaque fois que cet élément spécifique du cycle de produit est affiché.

Mais j'ai essayé d'ajouter _action avant _shop_loop_item mais le problème est $product变量不包含该对象。我正在考虑 $product->get_id() que s'il correspond à l'identifiant du produit, du code HTML est appliqué à cet élément spécifique de la boucle de produit.

add_action('woocommerce_before_shop_loop_item', 'add_custom_badge', 1);

function add_custom_badge( $product ) {
    if ( $product->get_id() === 123 ) {
        echo '<script>console.log("add_custom_badge")</script>';
    }
} 

Au fait, get_id() 无法执行,因为 $product a l'air vide. C'est là que je me situe.

Oui, l'emplacement où je souhaite imprimer le HTML est woocommerce_before_shop_loop_item - juste avant le badge de vente.

Des suggestions sur la façon de filtrer les éléments de boucle ?

P粉087074897
P粉087074897

répondre à tous(1)
P粉718165540

Par défaut,

$product 不会传递到 woocommerce_before_shop_loop_item la fonction de rappel au hook. C'est pour ça que ça ne marche pas

Utilisez plutôt global $product

Vous obtenez donc :

function action_woocommerce_before_shop_loop_item() {
    global $product;

    // Is a WC product
    if ( is_a( $product, 'WC_Product' ) ) {
        if ( $product->get_id() == 123 ) {
            echo 'sssccc';
        }
    }
}
add_action( 'woocommerce_before_shop_loop_item', 'action_woocommerce_before_shop_loop_item', 10 );
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal