0

我已成功创建下拉菜单,以从我在网站http://albertson.staging.wpengine.com/seminars/创建的名为“日期”的高级自定义字段中自动填充适当的信息。

按照此处的说明进行操作:

http://www.gravityhelp.com/documentation/page/Dynamically_Populating_Drop_Down_Fields

我遇到的唯一问题是如何以“漂亮”的格式显示日期。您可以看到日期是所有数字 (20140129) 而不是 01/28/2014

为了在上面的研讨会部分(红色边框)中适当地显示日期,我使用:

<?php if( get_field('date')): ?>

<?php
$date = get_field('date');
// $date = 19881123 (23/11/1988)

// extract Y,M,D
$y = substr($date, 0, 4);
$m = substr($date, 4, 2);
$d = substr($date, 6, 2);

// create UNIX
$time = strtotime("{$d}-{$m}-{$y}");

// format date (November 11th 1988)
echo date('M d', $time);
?>

如何在我创建的重力形式函数中传递相同的信息以使日期显示得很好?以下是到目前为止我对重力形式的功能。

    add_filter('gform_pre_render_4', 'populate_dates');

function populate_dates($form){

    foreach($form['fields'] as &$field){

        if($field['type'] != 'select' || strpos($field['cssClass'], 'populate-dates') === false)
            continue;

        // you can add additional parameters here to alter the posts that are retreieved
        // more info: http://codex.wordpress.org/Template_Tags/get_posts
        $currentdate = date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y")));

        $events = get_posts(array(
                    'post_type' => 'seminars',
                    'orderby' => 'date',
                    'order' => 'ASC',
                    'meta_query'=> array(
                        array(
                          'key' => 'date',
                          'compare' => '>=',
                          'value' => $currentdate,
                          'type' => 'DATE',
                        )),
                    'meta_key' => 'date',
                    ));  

        // update 'Select a Post' to whatever you'd like the instructive option to be
        $choices = array(array('text' => 'Select a Date', 'value' => ' '));

        foreach($events as $post){
            $choices[] = array('text' => $post->date, 'value' => $post->date);

        }

        $field['choices'] = $choices;

    }

    return $form;
}
4

1 回答 1

1

听起来您正在寻找 PHP 的日期函数。我们通过 strtotime() 将日期字符串转换为时间戳,然后使用 date() 根据需要格式化日期。

$formatted_date = date( 'm/d/Y', strtotime( $post->date ) );

在您的代码示例中:

foreach( $events as $post ){
    $formatted_date = date( 'm/d/Y', strtotime( $post->date ) );
    $choices[] = array('text' => $formatted_date, 'value' => $post->date );
}
于 2014-01-11T02:13:04.640 回答