Compte à rebours du produit Woocommerce sur la page d'archive/cycle
P粉237647645
P粉237647645 2023-08-31 21:06:59
0
1
403
<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粉237647645
P粉237647645

répondre à tous(1)
P粉449281068

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>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal