4

次の 3 つのイベントのみを表示するイベント サイドバー セクションを作成しています。カスタム投稿タイプとカスタム フィールドはすべて機能していますが、イベントの開始日 (カスタム フィールド値) で投稿を並べ替える方法がわかるようです。日付を比較して特定の順序に整理できるphp関数はありますか。値を読んだときに、その日付で適切な投稿を表示できるように、新しく配置された日付で投稿IDも保持する必要があると思います。

誰かが私を導く特定の方向性を持っていますか?

これが私がする必要があることだと思います:

  1. 投稿を読み、日付を取得します
  2. それらの日付に関連付けられた投稿 ID で日付を並べ替えます
  3. 並べ替えられた日付を読み、最初の 3 つの投稿を投稿 ID 別に再表示します

私はそれをコーディングする方法に迷います...これは私がこれまでに持っているものです。このコードは、ワードプレスで公開日ごとに表示するだけです。

<?php query_posts('post_type=events');
            if (have_posts()) : while (have_posts()) : the_post(); ?>
                <?php $dateStart = get_post_meta($post->ID, 'date-start', true);?>
                <div class="date"><?php echo $dateStart; ?></div>

<?php endwhile; endif; wp_reset_query();  ?>
4

1 に答える 1

5

私は自分自身の質問に答えることができたと信じています。Wordpress には、投稿間でカスタム フィールドの値を比較する機能が組み込まれています。私のカスタムフィールド値である日付を比較するには、簡単に比較できるように「yyyymmdd」形式にする必要があります。

複数のループを作成したり、投稿 ID を保存したりする必要がないことに本当に驚きました。とにかく、これが他の誰かに役立つことを願っています。:]

 <?php 
        $args = array(
           'post_type' => 'events',
           'posts_per_page' => 3, //limited myself to 3 posts
           'meta_key' => 'date-start', //name of custom field
           'orderby' => 'meta_value_num', 
           'order' => 'ASC'
        );
        query_posts($args);
        if (have_posts()) : while (have_posts()) : the_post(); ?>
            //Insert code here...
            //Test to see if it is sorting the posts (below)
            <?php $dateStart = get_post_meta($post->ID, 'date-start', true); echo $dateStart;?>

<?php endwhile; endif; wp_reset_query();  ?>
于 2013-06-03T05:27:27.137 に答える