suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Woocommerce-Produkt-Countdown auf der Archiv-/Zyklusseite

<p>Ich habe mit dem Metaschlüssel <code>_sale_price_to</code> einen Countdown erstellt, um das Enddatum des Verkaufs anzuzeigen.请参阅下面的代码:</p> <pre class="brush:php;toolbar:false;">add_shortcode( 'woocommerce_timer_two', 'sales_timer_countdown_product_two', 20 ); Funktion sales_timer_countdown_product_two($atts) { extrahieren( shortcode_atts( array( 'id' => get_the_ID(), ), $atts, 'woocommerce_timer_two' ) ); globales $produkt; // Wenn das Produktobjekt nicht definiert ist, erhalten wir es aus der Produkt-ID if ( ! is_a($product, 'WC_Product') && get_post_type($id) === 'product' ) { $product = wc_get_product($id); } if ( is_a($product, 'WC_Product') ) { $sale_date = get_post_meta( $product->get_id(), '_sale_price_dates_to', true ); if ( ! empty( $sale_date ) ) { ?> <script> jQuery(function($){ "strikt verwenden"; $('.countdown-counter').each( function() { var to = $(this).attr("Countdown"); var thisis = $(this); var parent = $(this).parent(); var countDownDate = <?php echo $sale_date; ?> * 1000; // Den Countdown alle 1 Sekunde aktualisieren var x = setInterval(function() { // Aktuelles Datum und Uhrzeit abrufen var now = new Date().getTime(); // Finden Sie die Entfernung zwischen jetzt und dem Countdown-Datum var distance = countDownDate - now; // Zeitberechnungen für Tage, Stunden, Minuten und Sekunden var days = Math.floor(distance / (1000 * 60 * 60 * 24)); var Stunden = Math.floor((Distanz % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minuten = Math.floor((distanz % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); // Ergebnis in einem Element mit id="sale-end" ausgeben var html = Tage + Stunden + " : " + Minuten + " : " + Sekunden; thisis.html(html); // Wenn der Countdown abgelaufen ist, schreiben Sie einen Text if (Abstand < 0) { clearInterval(x); parent.css("display", "none"); } }, 1000); thisis.removeAttr("Countdown"); }); }); </script> <!-- hier wird der Countdown angezeigt --> <div class="product-countdown"> <span class="countdown-counter" countdown="'. $html .'"></span> </div>; <?php } } }</pre> <p>Der Code funktioniert auf der Produkteinzelseite, aber ich benötige ihn auf den Archiv- und Schleifenseiten. Auf der Archivseite haben alle Produkte den gleichen Countdown-Wert. Ich vermute, das liegt daran, dass ich nicht für jedes Archivelement Eigenschaften bereitstellen kann. </p> <p>Ähnliche Beiträge, die hilfreich sein könnten:</p> <ul> <li>Link 1</li> <li>Link 2</li> </ul></p>
P粉237647645P粉237647645442 Tage vor392

Antworte allen(1)Ich werde antworten

  • P粉449281068

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

    如果此代码在产品单页面上运行,那么您可以使用 WooCommerce 挂钩在存档/循环页面中添加操作挂钩。

    示例:-

    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]');
     
    }

    已编辑

    您可以使用添加的产品 ID 来替换该类。

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

    同时替换 html 部分。

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

    Antwort
    0
  • StornierenAntwort