カテゴリー・アーカイブやタグ・アーカイブで、投稿の並び順を、カスタムフィールドのメタ値で指定する方法です。
まず、カスタムフィールドに、任意の名前と数値を入力します。
『名前』は、何でも分かりやすいものでOK。
『値』は、投稿数が多い場合、1、2、3、4・・のように一桁から始めるより、01、02、03・・・、もしくは、001、002、003・・・のように二桁~三桁で設定するのをおすすめします。
その方が確実に序列が反映されるので。
続いて、functions.php に次のコードを記入します。
query->set は、WordPressの関数リファレンス/WP Queryを参照のこと。
ここでは、投稿の並び順(order)を「 ASC (昇順)」に設定していますが、ランダム、降順など、自由に設定することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | add_action( 'pre_get_posts', 'my_change_sort_order'); function my_change_sort_order($query){ if(is_archive()): //If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type ) //Set the order ASC or DESC $query->set( 'order', 'ASC' ); //Set the orderby $query->set( 'meta_key', 'story' ); $query->set( 'orderby', 'meta_value_num' ); endif; }; |
・ お使いのテーマ・テンプレートによっては、archive を指定することで、「管理画面の検索機能が正常に動作しない」「新着記事のウィジェットが正しく表示されない」など、不具合が生じることがあります。
その都度、サイト全体の動きを見ながら、functions.php の記述を調整して下さい。
その都度、サイト全体の動きを見ながら、functions.php の記述を調整して下さい。
カスタムフィールドの応用例
上記の方法に、プラスして、有料プラグインの 『Admin Column Pro』 を使えば、管理も楽になります。
参照記事 → WordPressの管理画面を見やすくする『Admin Column Pro』
カスタマイズした投稿一覧の表示です。
『STORY』というカスタムフィールドの名前について、数値の順に投稿が並んでいます。
設定画面。
投稿数の多いサイト、頻繁に過去記事の整理を行う方には便利なプラグインです。