重力形式&高级自定义字段

时间:2014-01-09 16:58:30

标签: php wordpress advanced-custom-fields

我已成功创建了下拉菜单,以自动填充我在网站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);
?>

如何在我创建的重力表单函数中传递相同的信息以使日期显示得很好?下面是我目前为Gravity Forms的功能。

    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;
}

1 个答案:

答案 0 :(得分:1)

听起来你正在寻找PHP的date功能。我们通过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 );
}