【问题标题】:ACF pro - return day with date pickerACF pro - 带日期选择器的返回日
【发布时间】:2021-06-28 20:17:33
【问题描述】:

我将 ACF pro 用于我的 wordpress。 我的日期选择器字段是转发器字段。

我只需要返回那一天。

我的代码:

<?php   
if( have_rows('dates') ):
while ( have_rows('dates') ) : the_row();
echo get_sub_field('date')."</br>";
endwhile;
else :
echo __( 'No dates available.','mywebsite' );
endif;
?>

【问题讨论】:

    标签: wordpress advanced-custom-fields


    【解决方案1】:

    您可以设置日期字段的返回值。

    编辑

    好的,所以如果你想显示两个日期,一个是完整的,一个是唯一的一天,你首先需要返回值是完整的日期,因为这个例子让天它是 d/m/Y

    $full_date = get_sub_field('date'); // the full date (format d/m/Y);
    $day_from_date = DateTime::createFromFormat('d/m/Y', $full_date)->format('d'); // will get the day from the $full_date
    

    这将为您提供所需的结果。

    有关该方法的更多信息,请参阅DateTime::createFromFormat

    【讨论】:

    • 谢谢。但我必须显示两个版本。第一个只有日期,第二个是完整的日期。
    • @microb14 编辑了我的答案,现在您可以从单个日期字段中获取全天和一天
    【解决方案2】:

    get_sub_field() 函数通常会根据字段类型返回一个字符串。此实例将返回时间戳作为字符串,例如 '2021-06-28 10:28:00'

    如果你只想返回一天,你可以使用 PHP 的 strtotime 函数,它会返回一个日期时间纪元整数 - 然后可以与 PHP 的 date结合使用> 功能打印为一天。以下是您可以用于 date 函数的格式列表:PHP DateTime::format

    例子:

    <?php   
    if (have_rows('dates')):
      while (have_rows('dates')) : the_row();
        $dateTime = strtotime(get_sub_field('date'));
        echo("Day : " . date('l', $dateTime) . "</br>");
      endwhile;
    else :
      echo __('No dates available.', 'mywebsite');
    endif;
    ?>
    

    【讨论】:

    • 不起作用。它总是在同一天显示。
    • 在不知道数据的情况下不确定进一步建议什么 - get_sub_field 在每一行返回什么? - 是时间戳吗?就像在您的 ACF 字段选项中一样,您可以选择您希望它返回的格式。我通常使用“c”返回带有时区的时间戳,但默认值可能不同 - 您可以在那里更改它 - 例如在您的字段设置集上您的返回格式为“l”以获取全天名称或“D”以获取缩短的日期或“j”以获取月份中的日期。 - 我的例子是假设你返回的东西'strtotime'可以解释
    【解决方案3】:

    作为您的设置而不是您的代码中的另一种解决方案 - 更改实际字段的“返回格式”。

    见:ACF Date Time Picker Docs

    例如:

    • 'd' - 日期,2 位数字,前导零
    • 'j' - 没有前导零的月份中的某天
    • 'D' - 一天的文字表示,三个字母
    • 'l' - 星期几的完整文本表示

    那么你的原始代码会输出正确的格式:

    <?php   
    if( have_rows('dates') ):
      while ( have_rows('dates') ) : 
        the_row();
        echo('Day: ' .  get_sub_field('date') . "</br>"); //This will now output your 'Return Format' in ACF setup
      endwhile;
    else :
      echo __( 'No dates available.','mywebsite' );
    endif;
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多