IMUZA.com

Xserver<<WordPress(ConoHa)<<はてなブログ

ホーム / Wordpress / WordPress:シンタックスハイライトprism.js導入

WordPress:シンタックスハイライトprism.js導入

2022/11/16 Wordpress

WordPress にプラグインを使わずにシンタックスハイライトを導入します。prism.js, highlight.js, google-code-prettify の3つを試してみましたが prism.js がよさそうです。

  • Highlighting Code Block からの経緯
  • Prism.js のダウンロード
    • プラグイン
  • WordPress への導入
  • Prism.js の使い方

Highlighting Code Block からの経緯

詳細は前記事「AndroidのChromeだけ固まる(止まる)ってどういうこと?!」にありますが、当初プラグイン Highlighting Code Block を入れたところ、Android の Chrome のみ固まってしまう現象が発生しました。結局、原因は Android の Chome のバグらしく、Android でも他のブラウザやデスクトップや iPhone の Chrome では発生しません。また、Prism.js を直接導入すれば固まる症状もコード要素を強くタップしたときに限定されることがわかり、注意事項を添えて Prism.js を導入することにしました。

Prism.js は前前記事の「WordPress:テンプレート階層がややこしすぎる」から適用させています。

Prism.js のダウンロード

CDN で読み込む方法もありますが、ファイルが各言語で1ファイルになりますので言語を指定してダウンロードしたほうが現実的です。

  • https://prismjs.com/

上記 Prism のサイトにアクセスし、右上の DOWNLOAD ボタンをクリックしますとダウンロードファイルのカスタマイズに行きます。

Minified version にチェックを入れ、Themes で好きなものを選びます。テーマのチェックを変更しますと、ページ最下行のサンプル表示が変更になります。

基本的な言語には最初からチェックが入っています。

  • Markup + HTML + XML + SVG + MathML + SSML + Atom + RSS 2.78KB
  • CSS 1.2KB
  • C-like 0.69KB
  • JavaScript 4.5KB

それ以外の言語を選択した場合は、1言語につき 300~500 バイト追加されます。言語によっては依存関係により必須のものが自動的に追加されるものもあります。

プラグイン

プラグインがたくさんあります。私は Chrome のバグのこともあり、Line Numbers と Toolbar, Copy to Clipboard Button を入れています。いろいろやってみて自分に必要なものを選べばいいと思います。

選択が終わりましたら、テーマのサンプル表示の下に「DOWNLOAD JS」「DOWNLOAD CSS」のボタンがありますのでクリックしてダウンロードします。

WordPress への導入

導入方法は、ダウンロードしたファイルを、CSSファイルは head 要素の中で、JSファイルは body 終了タグの前に読み込むだけです。WordPress の場合は、wp enqueue script 関数を使って読み込むことができます。

(Android 上の Chrome 限定の注意)
コードブロックをタップしますと数秒固まる場合があります。スクロール等他の操作に支障はありません。Chrome のバグとの報告が上がっています。詳細は「AndroidのChromeだけ固まる(止まる)ってどういうこと?!」をご覧ください。

add_action( 'wp_enqueue_scripts', 'theme_name_scripts' );
function theme_name_scripts() {
	if(is_single()){
		wp_enqueue_style( 'prism', get_stylesheet_directory_uri() . '/lib/prism/prism.css');
		wp_enqueue_script( 'prismjs', get_stylesheet_directory_uri() . '/lib/prism/prism.js', '', '', true );
	}
}
  • 関数リファレンス/wp enqueue script

スクリプトの場合は、オプションの最後の $in_footer を true にしておけば body 終了タグの前に読み込まれます。

Prism.js の使い方

使い方や導入のしかたは公式サイトの項目「Full list of features」にあります。

<pre><code class="language-css">p { color: red }</code></pre>

と、コードを <pre><code></code></pre> で包み、css で言語を指定するだけです。ただし、「<」と「&」を「&lt;」と「&amp;」にエスケープする必要があります。

WordPress でブロックエディタを使っている場合は、ブロックにコードを選択すれば自動でエスケープされます。そのうえで「高度な設定」を開き、追加CSSクラスに language-html などと言語名を入れれば Prism.js が適用されます。

プラグイン Highlighting Code Block を入れなくても簡単にシンタックスハイライトを導入できます。

クリスマスツリー 電飾つき 高級クリスマスツリー 壁掛け 飾り34個の取り外し可能なオーナメント デコレー...

クリスマスツリー 電飾つき 高級クリスマスツリー 壁掛け 飾り34個の取り外し可能なオーナメント デコレー…

Amazon
AndroidのChromeだけ固まる(止まる)ってどういうこと?!
WordPress:階層化パンくずリストを複数表示する(プラグインなし)
Twitter
Facebook
ブックマーク
LINEで送る

最初のサイドバー

最新記事

2023/03/21

WordPress:メール送信にGmailのSMTPを使う(プラグインなし)

2023/03/10

WordPress:サムネイル付き次の記事/前の記事

2023/02/28

Twitterシェアリンクはintent/tweetを使おう

2023/02/21

GoogleタグマネージャーとアナリティクスGA4

2023/02/8

WordPress:人気記事を直近の期間指定で表示する

最新記事を一覧で見る

よく読まれている記事

よく読まれている記事を一覧で見る

カテゴリー

  • はてなブログ214
  • WebTips109
  • javascript98
  • Joomla!88
  • Windows68
  • Wordpress65
  • CSS63
  • Joomla!更新53
  • Linux49
  • はてなテーマ45
  • Google34
  • Plamo33
  • はてなプラグイン25
  • php22
  • Node.js18
  • Ubuntu16
  • SASS16
  • laravel415
  • Chrome11
  • cms-style10
  • iPhone9
  • ConoHa WING6
  • Git入門6
  • genesis6
  • Python5
  • Android5
  • PC全般4
  • Facebook4
  • スマートフォン4
  • 静的サイトジェネレーター3
  • Firefox3
  • SSD3
  • Blankslate3
  • Docker3
  • Twitter2
  • GitHub2
  • Mactype2
  • はてなブクマ1
  • 映画1
  • youtube1
  • rails入門1
  • Xserver1

Footer

My Web Sites

  • @半径とことこ60分
  • そんなには褒めないよ。映画評
  • IMUZA.com
  • GitHub

Related Sites

  • WordPress公式
  • WordPress関数リファレンス
  • PHPマニュアル

Contact Us

  • お問い合わせフォーム
  • Twitter
  • Facebook
  • Feedly

Copyright © 2023 · IMUZA.com