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

今回はカスタムフィールドを使って記事の並び順を決めてみたいと思います。
前提条件は以下の通りです。
・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; ?>

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

カテゴリー: 未分類   パーマリンク

コメントを残す

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


*

* Copy This Password *

* Type Or Paste Password Here *

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>