Сравнение дат из пользовательского поля

Я пытаюсь сравнить даты с пользовательским полем. Я их хранили как что-то вроде «20121125». Если дата истекла, будет использоваться образ заполнителя, если нет, будет использоваться миниатюра по умолчанию. Любые советы приветствуются.

<?php $html = ""; $key = get_post_meta($post->ID, 'Due', true); $date = date('ymd'); if ($key >= $date) { the_post_thumbnail('medium'); } else { $html .= '<img src="http://exampleimage.com" alt="">'; } return $html; ?> 

Solutions Collecting From Web of "Сравнение дат из пользовательского поля"

Ну, точное время / временное время сервера можно получить с помощью функции current_time. И, сравнивая формат даты, это должен быть Ymd. Таким образом, сочетая эти две вещи, правильное сравнение для вас должно быть –

 $key = get_post_meta( $post->ID, 'Due', true ); $date = date('Ymd', current_time('timestamp') ); if( $key >= $date ) { // note to retrive the post thumbnail, you need to use get_the_post_thumbnail, // as the_post_thumbnail function actually echo the output $html .= get_the_post_thumbnail(null, 'medium'); } else { $html .= '<img src="http://exampleimage.com" alt="">'; } return $html; 

Теперь может возникнуть один вопрос, по которому вы сохраняете дату в метатете сообщений. Если значение дезинфицировано с временем сервера (по мере сохранения значения post_date), то это идеальное сравнение.

Вы можете попробовать следующее:

 <?php $html = ""; $key = get_post_meta($post->ID, 'Due', true); date_default_timezone_set('Africa/Lagos'); //Only if needed. Change this for your timezone if (strtotime($key) >= time()) { the_post_thumbnail('medium'); } else { $html .= '<img src="http://exampleimage.com" alt="">'; } return $html; ?> 

Здесь мы используем функцию strtotime, чтобы помочь нам сравнить эти две даты.

Вы можете найти более подробную информацию здесь:

  • Сравнение дат в PHP
  • Изменение часовой пояс по умолчанию

Надеюсь, поможет.

Вы можете сохранить дату после возврата в метку времени с помощью настраиваемых полей (т. Е. В таблице post_meta). Таким образом, вы сможете легко сравнивать даты. Затем вы можете использовать свой код следующим образом:

 <?php $html = ""; $stored_timestamp = get_post_meta($post->ID, 'Due', true); $current_timestamp = strtotime(date('Ym-d')); if ($stored_timestamp >= $current_timestamp) { the_post_thumbnail('medium'); } else { $html .= '<img src="http://exampleimage.com" alt="">'; } return $html; ?> 

Сохранять временную метку как:

 update_post_meta($post->ID,'Due',strtotime(date('Ym-d'));