如何在WordPress PHP中实现自动轮播的下一次配送时间文本行
问题:WordPress自定义配送时间轮播逻辑实现
我在WordPress站点使用PHP开发了自定义文本行,用于自动显示下一次配送时间。当前功能会自动更新周二和周五的配送日期,但我希望实现轮播逻辑:当距离某配送日(如周五)不足24小时时,隐藏该配送选项,仅显示另一个选项。现有代码如下:
<p class="mb-4 fw-bold"><?php _e('Järgmised tarneajad', 'esahver'); echo ": " ; $now = strtotime("now"); $next_delivery = strtotime('next tuesday'); $limit_hours = 17; $next_delivery_minus_hrs = strtotime('-' . $limit_hours . ' hours', $next_delivery); $final_next_delivery = NULL; if( $next_delivery_minus_hrs < $now ){ // past limit hours $next2_delivery = strtotime('next tuesday', $next_delivery); $final_next_delivery = wp_date( 'l, d.m.Y' , $next2_delivery); } else { $final_next_delivery = wp_date( 'l, d.m.Y' , $next_delivery ); } $now1 = strtotime("now"); $next_delivery1 = strtotime('next friday'); $limit_hours1 = 17; $next_delivery_minus_hrs1 = strtotime('-' . $limit_hours1 . ' hours', $next_delivery1); $final_next_delivery1 = NULL; if( $next_delivery_minus_hrs1 < $now ){ // past limit hours $next2_delivery1 = strtotime('next friday', $next_delivery1); $final_next_delivery1 = wp_date( 'l, d.m.Y' , $next2_delivery1); } else { $final_next_delivery1 = wp_date( 'l, d.m.Y' , $next_delivery1 ); } echo $final_next_delivery; echo "<input type='hidden' name='custom_delivery_date' value='".$final_next_delivery."'>"; echo " & "; echo $final_next_delivery1; echo "<input type='hidden' name='custom_delivery_date' value='".$final_next_delivery1."'>"; ?> </p>
我尝试编写if语句但未成功,请问该如何实现需求?
解决方案
优化原代码冗余部分,添加24小时阈值判断逻辑,动态控制配送选项的显示:
<p class="mb-4 fw-bold"><?php _e('Järgmised tarneajad', 'esahver'); echo ": "; $now = strtotime("now"); $hide_tuesday = false; $hide_friday = false; $limit_hours = 17; // 处理周二配送逻辑 $next_tuesday = strtotime('next tuesday'); $tuesday_cutoff = strtotime('-' . $limit_hours . ' hours', $next_tuesday); $final_tuesday = $tuesday_cutoff < $now ? wp_date('l, d.m.Y', strtotime('next tuesday', $next_tuesday)) : wp_date('l, d.m.Y', $next_tuesday); // 判断是否距离周二不足24小时,标记隐藏 if ($next_tuesday - $now < 24 * 60 * 60) { $hide_tuesday = true; } // 处理周五配送逻辑 $next_friday = strtotime('next friday'); $friday_cutoff = strtotime('-' . $limit_hours . ' hours', $next_friday); $final_friday = $friday_cutoff < $now ? wp_date('l, d.m.Y', strtotime('next friday', $next_friday)) : wp_date('l, d.m.Y', $next_friday); // 判断是否距离周五不足24小时,标记隐藏 if ($next_friday - $now < 24 * 60 * 60) { $hide_friday = true; } // 收集需要显示的配送项 $display_items = []; if (!$hide_tuesday) { $display_items[] = [ 'text' => $final_tuesday, 'input' => "<input type='hidden' name='custom_delivery_date' value='{$final_tuesday}'>" ]; } if (!$hide_friday) { $display_items[] = [ 'text' => $final_friday, 'input' => "<input type='hidden' name='custom_delivery_date' value='{$final_friday}'>" ]; } // 输出内容,自动处理分隔符 foreach ($display_items as $idx => $item) { echo $item['text'] . $item['input']; if ($idx !== count($display_items) - 1) { echo " & "; } } ?> </p>
核心逻辑说明:
- 冗余精简:只定义一次当前时间
$now,周二和周五共用同一基准 - 隐藏判断:通过
配送日时间戳 - 当前时间戳与24*60*60(24小时秒数)对比,标记是否隐藏对应选项 - 动态输出:收集需显示的配送项后循环输出,自动处理
&分隔符(仅多选项时显示)
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

