「テーブル」ブロックにソート機能を追加する方法

Cocoonカスタマイズ集
この記事は約6分で読めます。
記事内に広告が含まれています。

はじめに

以下の内容をCocoonで再現します。

テーブルをソートするための代表的な jQuery ライブラリには、以下の2つがあります。

  • DataTables
  • tablesorter

プラグイン「TablePress」はDataTablesを使用しており、参考ページでもDataTablesが利用されています。
一方で、本ブログではtablesorterを使用してテーブルのソートを実現しています。
これらのライブラリを使って、テーブルをソートする方法について説明します。

DataTables

完成イメージ

タイトル興行(億円)
名探偵コナン100万ドルの五稜星157.1
劇場版ハイキュー!! ゴミ捨て場の決戦115.5
キングダム 大将軍の帰還79.8
劇場版 SPY×FAMILY CODE: White63.2
ラストマイル58.9
機動戦士ガンダムSEED FREEDOM53.0
インサイド・ヘッド252.7
変な家50.5
怪盗グルーのミニオン超変身45.3
あの花が咲く丘で、君とまた出会えたら45.2

実装手順

以下の手順で実装します。

  • ラベル
    Gutenbergエディターでの設定
    Gutenbergエディター

    以下の手順で設定します。

    1. 「テーブル」ブロックを配置します。
    2. 「ヘッダーセクション」をオンにし、列の見出しを入力します。
      「ヘッダーセクション」を設定しないと正しく動作しません。
    3. 高度な設定→追加CSSクラスにmy-sortと入力します。
  • ラベル
    PHPを追加

    以下のコードをfunctions.phpに追加します。

    add_action('wp_enqueue_scripts', function() {
      // ライブラリを追加
      wp_enqueue_style(
        'datatables-css',
        'https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css',
        [],
        null
      );
    
      wp_enqueue_script(
        'datatables-js',
        'https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js',
        ['jquery'],
        null,
        true
      );
    
      // JavaScriptを追加
      wp_add_inline_script(
        'datatables-js',
        "jQuery(function($) {
           $('.my-sort table').DataTable({
             paging: false,        // ページネーションを非表示
             info: false,          // 下部の情報を非表示
             lengthChange: false,  // 表示件数の選択を非表示
             searching: false,     // 検索ボックスを非表示
             ordering: true        // 並び替え機能を有効
          });
        });"
      );
    });

tablesorter

完成イメージ

タイトル興行(億円)
名探偵コナン100万ドルの五稜星157.1
劇場版ハイキュー!! ゴミ捨て場の決戦115.5
キングダム 大将軍の帰還79.8
劇場版 SPY×FAMILY CODE: White63.2
ラストマイル58.9
機動戦士ガンダムSEED FREEDOM53.0
インサイド・ヘッド252.7
変な家50.5
怪盗グルーのミニオン超変身45.3
あの花が咲く丘で、君とまた出会えたら45.2

実装手順

以下の手順で実装します。

  • ラベル
    Gutenbergエディターでの設定

    「DataTables」と同様です。

  • ラベル
    PHPを追加

    以下のコードをfunctions.phpに追加します。

    add_action('wp_enqueue_scripts', function() {
      // ライブラリを追加
      wp_enqueue_script(
        'jquery-tablesorter',
        'https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.0/js/jquery.tablesorter.min.js',
        ['jquery'],
        null,
        true
      );
    
      // JavaScriptを追加
      wp_add_inline_script(
        'jquery-tablesorter',
        "jQuery(function($) {
           $('.my-sort table').tablesorter();
        });"
      );
    });
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    .my-sort th div {
      display:inline-block;
    }
    
    .tablesorter-headerUnSorted:after,
    .tablesorter-headerAsc:after,
    .tablesorter-headerDesc:after {
      display:inline-block;
      font-family: 'Font Awesome 5 Free';
      margin-left: 3px;
    }
    
    .tablesorter-headerUnSorted:after {
      content: '\f0dc';
    }
    
    .tablesorter-headerAsc:after {
      content: '\f0de';
    }
    
    .tablesorter-headerDesc:after {
      content: '\f0dd';
    }

さいごに

今回紹介した方法を使えば、「テーブル」ブロックにソート機能を簡単に追加できます。
DataTablesを使用すると、テーブル内の検索や詳細な設定など、さまざまな機能を活用できます。
一方、本ブログでは設定が簡単で手軽に使えるtablesorterを採用しています。
どちらを選ぶかは、デザインや必要な機能に応じて決めると良いでしょう。

タイトルとURLをコピーしました