Woocommerce-Produkt-Countdown auf der Archiv-/Zyklusseite
P粉237647645
2023-08-31 21:06:59
<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>
如果此代码在产品单页面上运行,那么您可以使用 WooCommerce 挂钩在存档/循环页面中添加操作挂钩。
示例:-
已编辑
您可以使用添加的产品 ID 来替换该类。
同时替换 html 部分。