投标时间不足3分钟加时
Adding time on bid placing when time less than 3 minute
我在我的产品页面上使用了一个挂钩,并添加了一个功能,可以在任何出价时增加 10 分钟(600 秒)的出价时间。
add_action( 'woocommerce_simple_auctions_outbid', 'woocommerce_simple_auctions_extend_time', 50 );
add_action( 'woocommerce_simple_auctions_proxy_outbid', 'woocommerce_simple_auctions_extend_time', 50 );
function woocommerce_simple_auctions_extend_time($data){
$product = get_product( $data['product_id'] );
if ('auction' === $product->get_type() ){
$date1 = new DateTime($product->get_auction_dates_to());
$date1->add(new DateInterval('PT600S'));
update_post_meta( $data['product_id'], '_auction_dates_to', $date1->format('Y-m-d H:i:s') );
}
}
但是当客户出价时,它会随时增加10分钟(我不希望出价时间增加到一个巨大的数字),所以我可能需要设置一个限制,这个代码只在出价时间较少时生效不到 3 分钟。
编辑:
我正在将代码更改为带有 if 验证的限制时间,但它仍然会在倒计时超过 3 分钟时添加时间:
function woocommerce_simple_auctions_extend_time($data){
$product = get_product( $data['product_id'] );
if ('auction' === $product->get_type() ){
//check if time shorter than 3 min
$date1 = new DateTime($product->get_auction_dates_to());
$current_dt = new DateTime('NOW');
$interval= date_diff($current_dt, $date1);
$remaining_seconds = $interval->format("%s");
if($remaining_seconds < 180) {
// add time
$date1->add(new DateInterval('PT600S'));
update_post_meta( $data['product_id'], '_auction_dates_to', $date1->format('Y-m-d H:i:s') );
}
}
}
您可以将产品结束时间 $date1
和 运行 与当前时间的另一个日期时间对象相差,并检查差异是否小于 3 分钟。
如果少于 3 分钟,则将您的 10 分钟添加到产品的结束时间。
$current_dt = new DateTime('NOW');
$interval= date_diff($current_dt, $date1);
$remaining_seconds = $interval->format("%s");
if($remaining_seconds < 300) {
// add time
}
我使用了current_time(timestamp)来捕捉当前时间,并使用
strtotime('+5 分钟', $time) 与拍卖截止日期进行比较。
这是我可以 运行 成功的代码:
$time = current_time('timestamp' );
$timeplus5 = date('Y-m-d H:i:s', strtotime('+5 minutes', $time));
if ($timeplus5> $auctionendformat) {
$auctionend->add(new DateInterval('PT600S'));
update_post_meta( $data['product_id'],'_auction_dates_to', $auctionend->format('Y-m-d H:i:s') );
我在我的产品页面上使用了一个挂钩,并添加了一个功能,可以在任何出价时增加 10 分钟(600 秒)的出价时间。
add_action( 'woocommerce_simple_auctions_outbid', 'woocommerce_simple_auctions_extend_time', 50 );
add_action( 'woocommerce_simple_auctions_proxy_outbid', 'woocommerce_simple_auctions_extend_time', 50 );
function woocommerce_simple_auctions_extend_time($data){
$product = get_product( $data['product_id'] );
if ('auction' === $product->get_type() ){
$date1 = new DateTime($product->get_auction_dates_to());
$date1->add(new DateInterval('PT600S'));
update_post_meta( $data['product_id'], '_auction_dates_to', $date1->format('Y-m-d H:i:s') );
}
}
但是当客户出价时,它会随时增加10分钟(我不希望出价时间增加到一个巨大的数字),所以我可能需要设置一个限制,这个代码只在出价时间较少时生效不到 3 分钟。
编辑:
我正在将代码更改为带有 if 验证的限制时间,但它仍然会在倒计时超过 3 分钟时添加时间:
function woocommerce_simple_auctions_extend_time($data){
$product = get_product( $data['product_id'] );
if ('auction' === $product->get_type() ){
//check if time shorter than 3 min
$date1 = new DateTime($product->get_auction_dates_to());
$current_dt = new DateTime('NOW');
$interval= date_diff($current_dt, $date1);
$remaining_seconds = $interval->format("%s");
if($remaining_seconds < 180) {
// add time
$date1->add(new DateInterval('PT600S'));
update_post_meta( $data['product_id'], '_auction_dates_to', $date1->format('Y-m-d H:i:s') );
}
}
}
您可以将产品结束时间 $date1
和 运行 与当前时间的另一个日期时间对象相差,并检查差异是否小于 3 分钟。
如果少于 3 分钟,则将您的 10 分钟添加到产品的结束时间。
$current_dt = new DateTime('NOW');
$interval= date_diff($current_dt, $date1);
$remaining_seconds = $interval->format("%s");
if($remaining_seconds < 300) {
// add time
}
我使用了current_time(timestamp)来捕捉当前时间,并使用 strtotime('+5 分钟', $time) 与拍卖截止日期进行比较。
这是我可以 运行 成功的代码:
$time = current_time('timestamp' );
$timeplus5 = date('Y-m-d H:i:s', strtotime('+5 minutes', $time));
if ($timeplus5> $auctionendformat) {
$auctionend->add(new DateInterval('PT600S'));
update_post_meta( $data['product_id'],'_auction_dates_to', $auctionend->format('Y-m-d H:i:s') );