はじめに
| 設定 | 大項目 | 項目 | 設定値 |
|---|---|---|---|
| コード | ハイライト表示 | ソースコードをハイライト表示する | オン |
| 行番号を表示する | オン |
表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; }
補足

「コード」ブロックを選択し、高度な設定→追加CSSにCSSプロパティを入力して開始行を指定します。
例えば行番号を10から開始する場合は、--start-line: 10;と入力します(図1参照)。
さいごに
今回紹介した方法を使えば、Cocoon設定に依存せずに「コード」ブロックに行番号を追加できます。
コードの行数が99行を超えても行番号を正しく表示できるため、大規模なコードも見やすく管理できます。


