プラグインなしで記事にソースコードを埋め込む

ソースコード表示方法いろいろ

WordPressの記事の中でソースコードを表示させる際、背景などに色をつけて見やすくする方法を紹介します。
実現するには、プラグインを使う方法が楽ですが、この類のプラグインは重いという評判です。
また、Code Pen のようなソースコード管理のサービスを利用する方法もありますが、数行のコードやコマンドを記事に埋め込むには向いていなさそうです。
JSのライブラリを利用してコードをきれいに表示する方法もあります。

Googleが提供するJSライブラリ「Google code-prettify」

今回は、Googleが提供するJSライブラリをCDNから利用する方法を紹介します。
準備は簡単で、以下のJSファイルをCDNから読み込むだけです。

<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>

JSを読み込んだら、記事の中でテキストモードにてソースコードを以下のタグで囲めばOKです。

<pre class="prettyprint"><code>ソースコード</code></pre>

上記のようにタグで囲めば以下のように表示されます。

ソースコード

WordPressでJSファイルを読み込む

WordPressでGoogle code-prettifyのJSファイルを読み込ませます。
子テーマのfunction.phpに以下のコードを追加します。以下では記事ページのみJSファイルを読み込ませるようにしています。

// Google code-prettify によるソースコード埋め込み(記事ページのみ)
if ( IS_SINGLE) {	add_action('wp_enqueue_scripts', 'themeslug_enqueue_script');	function themeslug_enqueue_script(){	wp_register_script('google-code-prettify-js', 'https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sunburst', null, null, false);	wp_enqueue_script('google-code-prettify-js');	}
}

上記の記事ページを判定する定数「IS_SINGLE」は事前に以下のコードをfunction.phpに追加しておくと利用できます。

// ページ種類の判定結果を定数化しておく
add_action( 'wp', function() {	/* ページ種別 条件分岐タグ*/	define( "IS_HOME", is_home() || is_front_page() );	define( "IS_SINGLE", is_single() );	define( "IS_PAGE", is_page() );	define( "IS_ARCHIVE", is_archive() );	define( "IS_PT_ARCHIVE", is_post_type_archive() );	define( "IS_DATE", is_date() );	define( "IS_AUTHOR", is_author() );
}, 1);

コードを折り返ししない

デフォルトのままですと、コードの桁数が多いと折り返しして表示されるので、折り返ししないで横スクロールバーが表示されるようにします。
CSSに以下を追加します。

/*** Google code prettify 用 ***/
pre.prettyprint { overflow: auto !important; white-space: pre !important;
}

WordPressの記事編集画面にタグ出力ボタンを追加

記事編集画面で簡単に上記タグ出力ができるよう、プラグイン「AddQuicktag」を設定します。
今回は、「code-pretty」としてタグ出力ボタンを作成しました。
テキストモードの編集画面に、ソースコードを記述し、そのソースコードを選択して「code-pretty」ボタンを押すだけで、ソースコードが「Google code-prettify」のタグで囲まれます。

htmlソースを貼り付ける際の注意

htmlソースを貼り付ける際、htmlの特定のタグ(<、&、空白 等)をエスケープする必要があります。
以下のサイト等を利用してHTMLコードを変換し貼り付けます。

コメントを残す

コメントは当サイト運営者の承認後に反映されます。
お名前はニックネームでも結構です。

Comments are allowed only in Japanese. / 日本語が含まれない投稿は無視されますのでご注意ください。