Maison  >  Questions et réponses  >  le corps du texte

Personnalisez les badges pour les identifiants de produits spécifiques sur les éléments de la boucle d'archive WooCommerce

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粉087074897P粉087074897268 Il y a quelques jours345

répondre à tous(1)je répondrai

  • P粉718165540

    P粉7181655402024-02-18 11:58:24

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

    répondre
    0
  • Annulerrépondre