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

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

はじめに

以下を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 () {
      ob_start();
      ?>
      jQuery(function ($) {
        $('.my-sort table').DataTable({
          paging: false,        // ページネーションを非表示
          info: false,          // 下部の情報を非表示
          lengthChange: false,  // 表示件数の選択を非表示
          searching: false,     // 検索ボックスを非表示
          ordering: true        // 並び替え機能を有効
        });
      });
      <?php
    
      $handle = "datatables";
    
      wp_enqueue_style($handle, 'https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css');
      wp_enqueue_script($handle, 'https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js', ['jquery'], null, true);
      wp_add_inline_script($handle, ob_get_clean());
    });

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 () {
      ob_start();
      ?>
      .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';
        font-weight: 900;
        margin-left: 3px;
      }
    
      .tablesorter-headerUnSorted::after {
        content: '\f0dc';
      }
    
      .tablesorter-headerAsc::after {
        content: '\f0de';
      }
    
      .tablesorter-headerDesc::after {
        content: '\f0dd';
      }
      <?php
    
      $handle = 'tablesorter';
    
      wp_register_style($handle, false);
      wp_enqueue_style($handle);
      wp_add_inline_style($handle, ob_get_clean());
    
      ob_start();
      ?>
      jQuery(function ($) {
        $('.my-sort table').tablesorter();
      });
      <?php
    
      wp_enqueue_script($handle, 'https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.0/js/jquery.tablesorter.min.js', ['jquery'], null, true);
      wp_add_inline_script($handle, ob_get_clean());
    });

さいごに

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

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