1

カスタム日付フィールドが今日の日付より古い投稿を非表示にしようとしています。私のコードが現在設定されている方法は、期限切れと呼ばれるクラスを LI タグに追加することです。

            <?php 
                wp_reset_query();

                query_posts(array('post_type' => 'events',
                                  'showposts' => 5,
                                  'meta_key'=>'event_date',  
                                  'orderby' => 'meta_value', 
                                  'order' => ASC));
            ?>


            <?php while (have_posts()) : the_post(); ?>

                                    <?php 

                                        $eventDate = DateTime::createFromFormat('Ymd', get_field('event_date'));
                                        $currentdate = date("Ymd");

                                    ?>

                            <li class="<? if ($eventDate < $currentdate) { echo "expired"; } ?>">

                                    <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
                                    <span class="date"><strong>Event Date:</strong> <? echo $eventDate->format('d/m/Y'); ?></span>

                            </li>

            <?php endwhile;?>

誰か助けてください:(

4

1 に答える 1

2

現時点では、DateTimeオブジェクトを文字列と比較しています。同等のデータ型を比較していることを確認する必要があります。

// Convert stored date to DateTime object
$eventDate = DateTime::createFromFormat('Ymd', get_field('event_date'));

// Get the current date as a DateTime object
$nowDate = new DateTime();

// And compare them
if ($eventDate == $nowDate) {
   // They're the same, woohoo
} elseif ($eventDate < $nowDate) {
   // Expired
}
于 2013-02-23T14:53:30.213 に答える