根据Woocommerce产品循环中的日期时间规则显示下一个交货日
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据Woocommerce产品循环中的日期时间规则显示下一个交货日相关的知识,希望对你有一定的参考价值。
我在下面的代码中为家庭,类别和相关产品页面上的所有产品创建了一行文字,上面写着“大开口区域”......
add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_products_loop', 20 );
function woocommerce_products_loop(){
global $product;
echo '<p class="deliveryline">' . __("GREATER CAPE TOWN AREA", "woocommerce") . '</p>';
}
我想在上面有一行文字说“NEXT DELIVERY:”,然后使用以下逻辑:
- 如果是工作日下午12点之前,应该说“明天”
- 如果是工作日中午12点之后,应该说明后一个工作日的名称。
- 如果是星期五下午12点之前应该说“星期一”
- 如果是在星期五中午12点之后它应该说“星期二”
基本上,我们提供工作日的第二天发货,下午12点之前下订单。
我有类似的东西的代码可能工作..
$now = new Zend_Date();
if (($now->get(Zend_Date::WEEKDAY_DIGIT) % 6 == 0)
|| ($now->isLater('17:00:00', Zend_Date::TIMES))
) {
$now->set(
strtotime('+1 weekday', $now->toString(Zend_Date::TIMESTAMP)),
Zend_Date::TIMESTAMP
);
}
echo $now->toString(Zend_Date::W3C);
我只是需要帮助,请找出我需要的正确数学(此代码基于同一天,如果在下午5点之前),然后我将它放在原始代码中的哪个位置?
有人可以请帮助这个完整的代码片段吗?理想情况下,我希望它看起来像附加的图像。
期望的结果:
答案
以下代码将根据您的时间和日期规格动态显示交货日(您必须在代码中设置商店time zone):
add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_products_loop', 20 );
function woocommerce_products_loop(){
global $product;
// Set Your shop time zone (http://php.net/manual/en/timezones.php)
date_default_timezone_set('Europe/Paris');
$is_week_days = in_array( date('w'), array( 1, 2, 3, 4 ) ) ? true : false; // From Monday to Thursday
$is_friday = date('w') == 5 ? true : false; // Friday
$is_week_end = in_array( date('w'), array( 0, 6 ) ) ? true : false; // Weekend days
$end_time = mktime('12', '00', '00', date('m'), date('d'), date('Y')); // 12h00
$now_time = time();
$after_tomorow = date('l', strtotime('+2 days'));
// Displayed day conditions
if( $is_week_days && $now_time < $end_time ) {
$displayed_day = __("TOMORROW", "woocommerce");
} elseif( $is_week_days && $now_time >= $end_time ) {
$displayed_day = strtoupper( date( 'l', strtotime('+2 days') ) );
} elseif( $is_friday && $now_time < $end_time ) {
$displayed_day = __("MONDAY", "woocommerce");
} elseif( ( $is_friday && $now_time >= $end_time ) || $is_week_end ) {
$$displayed_day = __("THUESDAY", "woocommerce");
}
// Dynamic text Output based on date and time
echo '<p class="deliveryline">' . __("NEXT DELIVERY: ", "woocommerce") . $displayed_day .
'<br>' . __("GREATER CAPE TOWN AREA", "woocommerce") . '</p>';
}
代码位于活动子主题(活动主题)的function.php文件中。经过测试和工作。
以上是关于根据Woocommerce产品循环中的日期时间规则显示下一个交货日的主要内容,如果未能解决你的问题,请参考以下文章
在 Shop 中的 Woocommerce 产品循环中放置自定义徽章的最佳方式是啥
在 WooCommerce 中的标题下方显示循环产品类别项目描述
在 Woocommerce 中的产品自定义循环上启用 Ajax 添加到购物车按钮
根据 Woocommerce 中的产品类别按项目自定义电子邮件通知