You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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 " &amp; ";
            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 " &amp; ";
    }
}
?>
</p>

核心逻辑说明:

  1. 冗余精简:只定义一次当前时间$now,周二和周五共用同一基准
  2. 隐藏判断:通过配送日时间戳 - 当前时间戳与24*60*60(24小时秒数)对比,标记是否隐藏对应选项
  3. 动态输出:收集需显示的配送项后循环输出,自动处理&分隔符(仅多选项时显示)

内容的提问来源于stack exchange,提问作者Markus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 05:15:29