カテゴリー(ターム)の表示順を任意の順にソートする(プラグインなし)

single.phpに所属タームが複数ある場合に、所属タームの表示順を指定する方法です。
並び順を変更するプラグインもありますが、複数のカスタム投稿タイプが登録されている場合に不具合が多いので、プラグインなしで作成します。

投稿タイプがひとつの場合は、プラグインを使用してOKかと思います。

目次

大まかな手順

  1. ターム詳細にカスタムフィールド(表示順入力欄)を用意する
  2. 管理画面のターム一覧に、カスタムフィールドを表示させる旨をfunctions.phpに追記(上記の順番を見やすく表示させる)
  3. single.phpで、所属タームをカスタムフィールドの数値順にソートする

あった方がわかりやすいですが、手順2はなくても構いません。

準備するもの

  • advanced custom field(プラグイン)
  • functions.php
  • single.php

毎回必ず入れているadvanced custom field

手順1.Advanced Custom FIeldで、ターム詳細に数値入力欄を設ける

今回は、ターム名:’技術’、タームスラッグ:’techmiques’というタームで作成します。
フィールドタイプは数値、表示条件はタクソノミーが’技術’と等しい場合、で指定します。

手順2.ターム一覧にカスタムフィールドを表示させる

functions.phpに下記を追記します。

// 管理画面での表示項目追加
function my_add_columns($columns) {
  $columns['my_column_name'] = '表示順';
  return $columns;
}
add_filter( 'manage_edit-techniques_columns', 'my_add_columns' );

// カスタムフィールド'sortnum'を表示させる
function my_add_columns_content_taxonomy($arg_1, $column_name, $term_id) {
  if( $column_name == 'my_column_name' ) {
    $sort = get_field('sortnum', 'techniques_'.$term_id);
    $stitle = $sort;
  }

  if ( isset($stitle) && $stitle ) {
    echo esc_attr($stitle);
  }
}
add_action( 'manage_techniques_custom_column', 'my_add_columns_content_taxonomy', 10, 3 );

これで管理画面にカスタムフィールド’sortnum’が表示されるようになります。
こちらの画像は数値入力後なので、本来はこの段階ではまだ数字は表示されません。

手順3.タームの表示順を入力する

手順1で、ターム詳細に「カテゴリー表示順」というフィールドが追加されましたので、入力していきます。
(ターム一覧→ターム名クリック→下の方にあります)

タームの増加や入れ替えの可能性を考え、10刻み、100刻みなどで入れていくといいかもしれません。

手順4.singe.phpでソートする

single.phpの所属タームを表示させる部分で、カスタムフィールド’sortnum’に入力した数値順になるように指定します。

<?php
  $post_ID = get_the_ID();
  $taxonomy_name = 'techniques';
  $category_term = wp_get_post_terms($post_ID, $taxonomy_name, array( 'meta_key' => 'sortnum', 'orderby' => 'meta_value_num', ));

  if ($category_term) {
    foreach ($category_term as $value) {
      $url = home_url('/'.$taxonomy_name. '/' . $value->slug.'/');
      echo '<a href="'.$url.'">'.$value->name.'</a>';
    }
  }
?>
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次