recherche

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

Compte à rebours du produit Woocommerce sur la page d'archive/cycle

<p>J'ai fait un compte à rebours en utilisant la clé méta <code>_sale_price_to</code>请参阅下面的代码:</p> <pre class="brush:php;toolbar:false;">add_shortcode( 'woocommerce_timer_two', 'sales_timer_countdown_product_two', 20 ); fonction sales_timer_countdown_product_two ($atts) { extraire( shortcode_atts( tableau( 'identifiant' => get_the_ID(), ), $atts, 'woocommerce_timer_two' ) ); produit $ global ; // Si l'objet produit n'est pas défini, nous l'obtenons à partir de l'ID produit if ( ! is_a($product, 'WC_Product') && get_post_type($id) === 'product' ) { $produit = wc_get_product($id); } if ( is_a($produit, 'WC_Product') ) { $sale_date = get_post_meta( $product->get_id(), '_sale_price_dates_to', true ); if ( ! vide( $sale_date ) ) { ?> <script> jQuery(fonction($){ "utiliser strict" ; $('.countdown-counter').each( function() { var to = $(this).attr("compte à rebours"); var ceci est = $(ce); var parent = $(this).parent(); var countDownDate = <?php echo $sale_date; ?> *1000 ; // Met à jour le compte à rebours toutes les 1 seconde var x = setInterval(fonction() { // Récupère la date et l'heure du jour var maintenant = new Date().getTime(); // Trouver la distance entre maintenant et la date du compte à rebours var distance = countDownDate - maintenant ; // Calculs de temps pour les jours, heures, minutes et secondes var jours = Math.floor(distance / (1000 * 60 * 60 * 24)); var heures = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var secondes = Math.floor((distance % (1000 * 60)) / 1000); // Affiche le résultat dans un élément avec id="sale-end" var html = jours + heures + " : " + minutes + " : " + secondes ; ceci est.html(html); // Si le compte à rebours est terminé, écrivez un texte si (distance < 0) { clearInterval(x); parent.css("affichage", "aucun"); } }, 1000); thisis.removeAttr("compte à rebours"); }); }); </script> <!-- c'est ici que le compte à rebours est affiché --> <div class="compte à rebours produit"> <span class="compte à rebours" compte à rebours = "'. $html .'"></span> </div>; <?php } } }</pré> <p>Le code fonctionne sur la page unique du produit, mais j'en ai besoin sur les pages d'archive et de boucle. Sur la page d'archives, tous les produits ont la même valeur de compte à rebours. Je suppose que c'est parce que je ne peux pas fournir de propriétés pour chaque élément d'archive. </p> <p>Messages connexes pouvant être utiles :</p> <ul> <li>Lien 1</li> <li>Lien 2</li> </ul></p>
P粉237647645P粉237647645457 Il y a quelques jours404

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

  • P粉449281068

    P粉4492810682023-09-01 16:58:52

    Si ce code s'exécute sur une seule page de produit, vous pouvez alors utiliser les hooks WooCommerce pour ajouter des hooks d'action dans les pages d'archive/boucle.

    Exemple :-

    add_action( 'woocommerce_after_shop_loop_item_title', 'zillion_countdown_show_in_loop', 20 );
    function zillion_countdown_show_in_loop()
    {
        do_shortcode('[woocommerce_timer_two]');
     
    }

    Modifié

    Vous pouvez remplacer cette classe par l'ID de produit ajouté.

    $('.countdown-counter<?php echo $product->get_id();?>')

    Remplacez également la partie html.

    <div class="product-countdown">
        <span class="countdown-counter<?php echo $product->get_id(); ?>" countdown="'. $html .'"></span>
    </div>

    répondre
    0
  • Annulerrépondre