wordpress

【WordPress】PHPでカテゴリを自由に並び替える方法を解説

こんにちは、フルスタックエンジニアのryuです。

今回の記事は、WordPressのPHPでカテゴリを自由に並び替える方法を解説します。wordpressでget_categories()を使うと、カテゴリが取得できます。orderを使うと、昇順/降順で並び替えできますが、自由に並び替えることができません。そこで、PHPでカスタマイズして自由にカテゴリの表示を並び替えます。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

【WordPress】PHPでカテゴリを自由に並び替える方法を解説

phpでwordpressのカテゴリを自由に並び替える方法を解説します。

並び替えのコード

まずは、自由に並び変えるコードをお見せします。

<?php 
$current_category_slug = get_query_var('category_name'); // 現在のカテゴリのスラッグを取得

 $categories = get_categories();

 // ソートする順序
$desired_order = ['cate1','cate2','cate3','cate4','cate5'];

// ソートされたカテゴリーの配列を初期化
$sorted_categories = array();

// ソートされたカテゴリーを作成
foreach ($desired_order as $order) {
     foreach ($categories as $category) {
           if ($category->slug === $order) {
              $sorted_categories[] = $category;
              break;
           }
      }
}

//並び替えたカテゴリを表示
foreach ($sorted_categories as $category) {
   echo $category->name;
}

?>

ソートの順序$desired_orderに、ご自身で表示したい順番のカテゴリを入れます。その後、foreach並び替えを行います。

並び替えると、$sorted_categoriesの中にカテゴリ情報が入っています。そのカテゴリ情報をforeachで出力します。

名前を出力したい場合は、$category->name、スラッグを表示したい場合は、$category->slugのようにします。

詳細については、関数リファレンスを参照してください。

idや名前で昇順降順の並び替えをする

自由にカスタマイズする必要がない場合は、昇順/降順での並び替えを使いましょう。

以下のように、orderbyとorderを使用します。

<?php 
$args = array(
	'orderby'                  => 'name',
	'order'                    => 'ASC', もしくはDSEC
); 

$categories = get_categories( $args );
?>

orderbyは、指定した項目のアルファベット順またはカテゴリー ID によってカテゴリーを並べ替えます。デフォルトはカテゴリー名で並かえが行われます。

name以外には、以下のものが指定可能です。

  • id
  • name
  • slug
  • count
  • term_group

idや名前、count(記事数)などで並び替えが可能です。

PHPでいじらなくても、上記の内容を駆使することで自由にカテゴリを並び替えることもできます。

まとめ

今回の記事は、WordPressのPHPでカテゴリを自由に並び替える方法を解説しました。Web制作などでカスタマイズしたサイトを作成したい場合に参考にしてください。

ブログを簡単にAIで簡単に作成しませんか?

ブログをAIで自動で作成するツール「ArticleAlchemy」をリリースしました。

  • ブログ記事を自動で作成 専門知識不要で、高品質なSEO対策済み記事を瞬時に生成します。
  • キーワードを自動で選定 情報収集や収益化につながるキーワードが分かります。
  • ブログ初心者に特化 直感的なインターフェースで、誰でも簡単に利用できます。

まずは無料でお試し

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。