wordpress 从2个自定义日期选取器字段中显示日期范围

jgovgodb  于 2022-12-03  发布在  WordPress
关注(0)|答案(1)|浏览(197)

我用ACF创建了两个自定义日期选择器字段(beginning_date和completion_date),需要将它们输出/显示为日期范围。
例如,如果beginning_date Year和completion_date Year相等,我需要输出beginning_date日/月- completion日/月/年。
这些字段使用的显示和返回格式为:l,F,j,Y
我到处都找遍了!并试图实现这一点:Create display date range from two dates in ACF in Wordpress
我也尝试过将字段转换为日期时间对象,但是将它们作为日期进行比较似乎是错误的方法!我不知道我还有什么地方失败了...我重新开始,因为到目前为止没有任何工作,所以我没有代码可以在这里发布,因为我最终得到了一个弗兰肯斯坦代码片段,我删除了它,然后来到这里寻求绝望的帮助!

qvsjd97n

qvsjd97n1#

在您的functions.php中

function date_compare($id){
    
    $start_date = get_field('beginning_date', $id);
    $end_date = get_field('completion_date', $id);
    
    $start_year = wp_date("Y", strtotime( $start_date ) );
    $end_year = wp_date("Y", strtotime( $start_date ) );
    
    $start_month = wp_date("n", strtotime( $start_date ) );
    $end_month = wp_date("n", strtotime( $start_date ) );
    
    $date_output = '';
    
    $start_date_format = "l, F j, Y";
    
    if( $start_date && $end_date ){
        
        if( $start_year == $end_year && $start_month == $end_month ){
            $start_date_format = "l j";
        }
        elseif( $start_year == $end_year){
            $start_date_format = "l, F j";
        }

    }
    
    
    if( $start_date ){
        $date_output .= wp_date($start_date_format, strtotime( $start_date ) );
    }
    
    if( $end_date ){
        $date_output .= ' - ' . wp_date("l, F j, Y", strtotime( $end_date ) );
    }
    
    return $date_output;
}

在主题中:

echo date_compare($post->ID);

相关问题