2014-01-09 3 views
0

Я успешно создал раскрывающееся меню, чтобы автоматически заполнить соответствующую информацию из расширенного настраиваемого поля, которое я создал, с именем 'date' на сайте 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, которую я создал, чтобы хорошо отображать дату? Ниже представлена ​​моя функция для 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

Похоже, вы ищете функцию 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); 
} 
Смежные вопросы