Campo Seletor de Datas (Date Picker)

O campo seletor de datas (date picker) cria um seletor jQuery de datas. Este campo é muito útil quando temos postagens que precisam exibir uma data diferente da data de publicação, como a data de início e fim de um determinado evento.

acf-seletor-datas

acf seletor datas

Campos adicionais deste tipo de campo

  • Formato dos dados: A string que representa a seqüência do formato da data. Este será o formato em que a data será guardada no banco de dados e retornada pela API. Se você pretende usar este campo para ordenar seus posts, por favor deixe o formato como yymmdd. Observe também que a seqüência de formato de data em JS é um pouco diferente de uma versão PHP, então você não vai usar o mesmo formato de quando configura a data que aparece em um post, nas opções do WordPress. Leia mais sobre formatos de data jQuery
  • Formato de exibição: Este será o formato em que a data será exibidada para o usuário. “dd/mm/yy” é o formato de exibição mais utilizado para nosso padrão brasileiro. Leia mais sobre formatos de data jQuery
  • Semana começa em: Usado apenas para definir qual será a primeira coluna do date picker exibido.

Como utilizar este campo em um template WP?

A API irá retornar uma string contendo a data no formato configurado previamente.

Dica: Você pode usar a função dateTime do PHP para ter maior controle sobre o valor retornado.

Se você planeja a sua data de saída esteja em um formato diferente, lembre-se que o formato de data em JS em em PHP são diferentes, e estarão exemplificados no final.

<?php

/*
*  Exibindo valor único
*/

?>
<p>Posted on: <?php the_field('data-evento'); ?></p>

<?php

/*
*  Criando um objeto PHP DateTime oa partir do valor do Date Picker Value
*  este exemplo foi feito pensando no formato da data salva estar como: yymmdd (JS) = Ymd (PHP)
*/

$date = DateTime::createFromFormat('Ymd', get_field('data-evento'));
echo $date->format('d-m-Y');

/*
*  Ordenação de posts baseado nas datas do Date Picker value
*/

$posts = get_posts(array(
	'meta_key' => 'data-evento', // name of custom field
	'orderby' => 'meta_value_num',
	'order' => 'ASC'
));

if( $posts )
{
	foreach( $posts as $post )
	{
		setup_postdata( $post );

		// ...

	}

	wp_reset_postdata();
}

/*
*  Exemplos de formatos e suas diferenças em JS e PHP
*/

$js = "yymmdd"
$php = "Ymd"

$js = "dd/mm/yy"
$php = "d/m/Y"

$js = "yy_mm_dd"
$php = "Y_m_d"

?>

Traduzindo para outros formatos de datas

Se você precisar exibir a data num formato não americano, o WordPress contém a função date_i18n que te deixa fazer tais conversões de formatos de data.

<?php

$dateformatstring = "l d F, Y";
$unixtimestamp = strtotime(get_field('data-evento'));

echo date_i18n($dateformatstring, $unixtimestamp);

?>

Formatação de valor ( PHP < 5.3)

Se o servidor estiver executando uma versão do PHP anterior à 5.3, o mais provável é que você não tenha acesso à classe DateTime e suas funções. Como um paleativo, você pode usar as funções strtotime e date para formatar o valor.

<?php 

$date = get_field('data-evento');
// $date = 19881123 (23/11/1988)

// extraindo dia (D), mês (M) e ano (Y)
$d = substr($date, 6, 2);
$m = substr($date, 4, 2);
$y = substr($date, 0, 4);

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

// formato de data (23/11/1988)
echo date('d/m/Y', $time);

// formato de data americano (November 11th 1988)
echo date('F n Y', $time);

?>

Date Query

Lembre-se que é possível utilizar o date_query do WordPress para ordenar suas postagens da forma que você precisar. Para isso, leiam os exemplos em https://codex.wordpress.org/Class_Reference/WP_Query#Date_Parameters

Deixe uma resposta