【WordPress】記事のソート順を変更する方法

WordPressのデフォルトでは記事は公開日の降順で表示されますが、カスタマイズすることで並び順を自由に変更できます。本記事では、WordPressで記事のソート順を変更する方法をいくつか紹介します。

WP_Queryを使ってソート順を変更する

WP_Queryを使用すると、特定の条件で記事を並び替えることができます。

例: 発行日を降順でソートする

$args = array(
  'post_type'      => 'post',
  'posts_per_page' => 10,
  'orderby'        => 'date',
  'order'          => 'DESC' // 昇順にする場合は'ASC'
);

$the_query = new WP_Query($args);

if ($the_query->have_posts()) :
  while ($the_query->have_posts()) : $the_query->the_post();
    the_title('<h2><a href="' . get_permalink() . '">', '</a></h2>');
  endwhile;
  wp_reset_postdata();
else :
  echo '投稿が見つかりませんでした。';
endif;

この方法は特定のページやカスタム投稿タイプに適用するのに適しています。

pre_get_postsを使ってメインクエリのソート順を変更する

pre_get_postsフィルターを利用すると、メインの投稿一覧の並び順を変更できます。

例: アーカイブページでタイトルの昇順にする

function custom_sort_posts_by_title($query) {
  if (!is_admin() && $query->is_main_query() && is_archive()) {
    $query->set('orderby', 'title');
    $query->set('order', 'ASC');
  }
}
add_action('pre_get_posts', 'custom_sort_posts_by_title');

この方法を使うと、サイト全体の特定のページ(例: アーカイブページ)で記事のソート順を統一できます。

カスタムフィールドを使って並び替える

Advanced Custom Fields(ACF)などを使って、カスタムフィールドに基づいたソートができます。

例: カスタムフィールド「field」でソート

$args = array(
  'post_type'      => 'post',
  'posts_per_page' => 10,
  'meta_key'       => 'field',
  'orderby'        => 'meta_value',
  'order'          => 'ASC'
);

$the_query = new WP_Query($args);

この方法は、価格や評価などのカスタムデータに基づいた並び替えをしたい場合に役立ちます。

プラグインを使って簡単に並び替え

コーディング不要で記事の並び順を管理したい場合は、以下のプラグインを使用すると便利です。

  • Post Types Order(ドラッグ&ドロップで並び替え)
  • Simple Custom Post Order(カスタム投稿タイプの並び順変更)

これらのプラグインを使用すると、直感的な操作で記事の順番を変更できます。