Intereting Posts
Почему двойные периоды («..») недействительны в имени файла WordPress? Получите последний комментарий от пользовательского типа сообщения, где depth = 1? Пользовательская кнопка tinyMCE 4.0 onclick больше не работает Ссылка «Оставить комментарий», даже если вы не можете Как проверить, нет ли у виджета заголовка Как предоставить пользовательские классы в виджет меню WordPress Заголовок сайта не исчезает из SERP и не отличается произвольным Кажется, я не вижу изображения на своей машине, но могу на сервере Исключение пользовательской постоянной ссылки WordPress Многостраничная настройка Как удалить папку и содержимое, которые я создал при установке плагина Изменить URL-адрес по умолчанию для настраиваемого типа плагина Запрос для пользовательского пользовательского интерфейса пользовательского типа не перекрывает всю почту Должны ли вы вручную пинговать новые сообщения WordPress? Есть ли функция редактирования содержимого «Блоги» на странице «Блоги»?

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

Я пытаюсь сравнить даты с пользовательским полем. Я их хранили как что-то вроде «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'));