カスタムフィールドで記事の並び順を定義

今回はカスタムフィールドを使って記事の並び順を決めてみたいと思います。
前提条件は以下の通りです。
・order という名前のカスタムフィールドを作成しておきます。
・それぞれの記事に該当カスタムフィールドの値として、1 2 3 などの自然数を入力しておきます。
・1 は最初に表示したい記事、2 は二番目に表示したい記事という具合に、昇順で並び替えすることとします。
・とりあえずトップページのみで実現してみます。

wp-content/themes/twentytwelve/index.php のループ開始コメントの直下に以下のようなコードを追加

            <?php /* Start the Loop */ ?>

            <?php
                // $meta_key に指定したフィールド内の値によって、$posts を昇順に並び替え
                $meta_key = 'order';
                foreach($posts as $key => $val){
                    $sort[$key] = $wpdb->get_var($wpdb->prepare("select meta_value from wp_postmeta where meta_key = %s and post_id = %d", $meta_key, $val->ID));
                }
                array_multisort($sort, SORT_ASC, $posts);
            ?>

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

                <?php  get_template_part( 'content', get_post_format() );  ?>

            <?php endwhile; ?>

たぶんうまくいくと思うのだけど。

This entry was posted in 未分類. Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*