「コード」ブロックに独自に行番号を追加する方法

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

はじめに

Cocoon設定
設定大項目項目設定値
コードハイライト表示ソースコードをハイライト表示するオン
行番号を表示するオン

表1の設定により、「コード」ブロックに行番号を表示できます。

通常、最大99行までしか行番号は表示されません。
また、コードと行番号は別々に表示されるため、例えば独自にカスタマイズしてコードを折り返し表示すると、行番号とコードがずれる場合があります。

そこで、表1の設定とは別に、独自に「コード」ブロックに行番号を追加します。
この方法を使用すると、コードが99行を超えても行番号が表示されるほか、任意の行番号から開始位置を設定できるようになります。

この記事では、この方法について説明します。

完成イメージ

本ページに完成イメージを反映させます。

実装手順

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

  • ラベル
    JavaScriptを追加

    以下のコードをjavascript.jsに追加します。

    jQuery(function ($) {
      // 処理対象とするコードブロック要素のセレクタ定数を定義
      const TARGET_SELECTOR = '.wp-block-code code';
    
      $(TARGET_SELECTOR).each(function () {
        // codeタグ内のHTMLコンテンツを取得し、改行文字で分割して各行の配列を生成
        var tmp = $(this).html();
        var lines = tmp.split('\n');
        var txt = '';
    
        // 分割された行の数だけループ処理を回す
        for (var i = 1; i <= lines.length; i++) {
          // 行番号用のspanタグと元の行テキストを連結
          txt += '<span class="code-highlight__line"></span>' + lines[i - 1];
    
          // 最終行以外の場合は改行コードを付与
          if (i !== lines.length) {
            txt += '\n';
          }
        }
    
        $(this).html(txt);
      });
    });
  • ラベル
    CSSを追加

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

    .wp-block-code {
      counter-reset: line calc(var(--start-line, 1) - 1);
      position: relative;
    
      .code-highlight__line::before {
        color: #777;
        content: counter(line);
        counter-increment: line;
        left: 0;
        margin-left: 10px;
        position: absolute;
        text-align: right;
        width: 2em;
      }
    }
    
    body:not(.editor-styles-wrapper) .wp-block-code {
      padding-left: 3em;
    }

補足

Gutenbergエディター

「コード」ブロックを選択し、高度な設定→追加CSSにCSSプロパティを入力して開始行を指定します。
例えば行番号を10から開始する場合は、--start-line: 10;と入力します(図1参照)。

さいごに

今回紹介した方法を使えば、Cocoon設定に依存せずに「コード」ブロックに行番号を追加できます。
コードの行数が99行を超えても行番号を正しく表示できるため、大規模なコードも見やすく管理できます。

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