WordPressの固定ページにソースコードを埋め込みたいのですが、行番号を自動的につけたいのと 長いソースコードそのままでは表示が長くなりすぎるので折りたたんで表示したい。 更にこのソースコードをダウンロードできるようにしたい。 よろしくお長居します。
ChatGPT:
WordPressの固定ページで以下のような機能を実現したいということですね:
- ソースコードに行番号を自動表示
- ソースコードを折りたたみ(開閉式)表示
- ソースコードをダウンロード可能にする
これらをプラグインを使わずに実装する場合、HTML+CSS+JavaScript で比較的簡単にできます。以下に具体的なコードと手順を紹介します。
✅ 手順:すべて実装したコードの例
① WordPressブロックエディタで「カスタムHTMLブロック」を使って以下を貼り付け
htmlコピーする編集する<style>
.code-box {
border: 1px solid #ccc;
margin-bottom: 1em;
border-radius: 5px;
overflow: hidden;
}
.code-header {
background-color: #f5f5f5;
padding: 0.5em;
cursor: pointer;
font-weight: bold;
}
.code-content {
display: none;
max-height: 400px;
overflow: auto;
background: #272822;
color: #f8f8f2;
font-family: monospace;
padding: 1em;
white-space: pre;
counter-reset: line;
}
.code-content code {
display: block;
line-height: 1.5;
}
.code-content code span {
display: block;
counter-increment: line;
}
.code-content code span::before {
content: counter(line);
display: inline-block;
width: 2em;
margin-right: 1em;
color: #999;
text-align: right;
}
</style>
<div class="code-box">
<div class="code-header" onclick="toggleCode(this)">
▼ ソースコードを表示/非表示
</div>
<div class="code-content">
<code>
<span>void setup() {</span>
<span> Serial.begin(9600);</span>
<span>}</span>
<span></span>
<span>void loop() {</span>
<span> Serial.println("Hello, world!");</span>
<span> delay(1000);</span>
<span>}</span>
</code>
</div>
</div>
<!-- ダウンロードリンク -->
<a href="/wp-content/uploads/source_code/example_code.ino" download>💾 ソースコードをダウンロード</a>
<script>
function toggleCode(header) {
const content = header.nextElementSibling;
content.style.display = (content.style.display === 'block') ? 'none' : 'block';
}
</script>
✅ 各機能の補足説明
📌 行番号の自動表示
<code><span>~</span></code>で行を囲むことで、CSSカウンタで自動的に行番号を追加しています。- 改行を
<span>…</span>で表現しておくと正確に行番号が振られます。
📌 折りたたみ表示
.code-headerをクリックすると.code-contentの表示がblock↔noneに切り替わります。- 初期状態は非表示 (
display: none)。
📌 ダウンロードリンク
/wp-content/uploads/source_code/example_code.inoに実際のソースコードファイル(.inoや.txtなど)をアップロードしておき、そこへリンクします。- 「メディア」からファイルをアップロードし、リンクURLを取得してください。
✅ 応用ヒント(便利な方法)
1. プラグインを使いたい場合は以下も検討:
- SyntaxHighlighter Evolved
- Prism.js(自分で追加も可能)
- Enlighter
2. ソースコードが長いときのスクロール対策
max-heightにより、縦に伸びすぎるのを防いでスクロール対応にしています。
✅ 次にやるべきこと
- WordPress管理画面で「メディア」→ ソースコードをアップロード
- そのファイルのURLを
<a href="…">に反映 - HTMLブロックで上記コードをコピー・貼り付け
<span>内に自分のコードを書き換える(または自動化支援可能)
必要であれば、あなたのコードを貼り付けていただければ、自動で <span> に変換したHTMLを生成することもできます。
「このコードを表示したい」という元コードがあれば、どうぞお知らせください。
あなた:
以下のコードでお願いします。
// // 20kHzから40kHzのPWMをランダムな時間で制御するプログラム
// // ATtiny202 用のプログラム
// Arduino IDEでの設定は”Clock: 10MHz internal”で動作する。
// 書き込み装置: “SerialUPDI – SLOW 57600 baud”
// これらを設定したら”ブートローダーを書き込む”をクリックする。
// #define PWM_PIN PIN_PA6
// 矩形波の出力ピン (ICの2ピン)
// CCMPL の範囲を定義 #define CCMPL_MAX 160
// 25kHz #define CCMPL_MIN 100
// 50kHz
// 矩形波出力を開始 void startPWM(uint8_t ccmpl) { TCB0.CTRLA = 0;
// TCB0を無効化 (リセット) TCB0.CCMPL = ccmpl;
// 周波数設定 (8ビット分解能) TCB0.CCMPH = ccmpl / 2;
// 50% デューティ比 TCB0.CTRLB = TCB_CCMPEN_bm | TCB_CNTMODE_PWM8_gc;
// 8ビットPWMモード TCB0.CTRLA = TCB_ENABLE_bm | TCB_CLKSEL_CLKDIV2_gc;
// 分周2 (10MHzクロック) }
// 矩形波出力を停止 void stopPWM() { TCB0.CTRLA = 0;
// TCBを無効化 } void setup() { pinMode(PWM_PIN, OUTPUT);
// 出力ピンの設定 (PA6, ICの2ピン) } void loop() { while (1) { uint8_t ccmpl = random(CCMPL_MIN, CCMPL_MAX + 1);
// CCMPL範囲でランダム選択 startPWM(ccmpl); uint16_t onTime = random(100, 3001);
// 0.1秒~3秒 delay(onTime); stopPWM(); uint16_t offTime = random(100, 1001);
// 0.1秒~2秒 delay(offTime); } }
ChatGPT:
ありがとうございます。以下にご指定のコードを 行番号付き・折りたたみ表示・ダウンロードリンク付き で WordPress の固定ページに貼り付けられる形式で整形しました。
✅ WordPressに貼り付けるコード(HTMLブロック用)
- WordPressの固定ページを開き、カスタムHTMLブロックを挿入してください。
- 下記コードを そのままコピペ してください。
htmlコピーする編集する<style>
.code-box {
border: 1px solid #ccc;
margin-bottom: 1em;
border-radius: 5px;
overflow: hidden;
}
.code-header {
background-color: #f0f0f0;
padding: 0.5em;
cursor: pointer;
font-weight: bold;
}
.code-content {
display: none;
max-height: 500px;
overflow: auto;
background: #272822;
color: #f8f8f2;
font-family: monospace;
padding: 1em;
white-space: pre;
counter-reset: line;
}
.code-content code {
display: block;
line-height: 1.5;
}
.code-content code span {
display: block;
counter-increment: line;
}
.code-content code span::before {
content: counter(line);
display: inline-block;
width: 2em;
margin-right: 1em;
color: #999;
text-align: right;
}
</style>
<div class="code-box">
<div class="code-header" onclick="toggleCode(this)">
▼ ソースコードを表示/非表示
</div>
<div class="code-content">
<code>
<span>//</span>
<span>// 20kHzから40kHzのPWMをランダムな時間で制御するプログラム</span>
<span>//</span>
<span>// ATtiny202 用のプログラム</span>
<span>// Arduino IDEでの設定は"Clock: 10MHz internal"で動作する。</span>
<span>// 書き込み装置: “SerialUPDI - SLOW 57600 baud”</span>
<span>// これらを設定したら”ブートローダーを書き込む”をクリックする。</span>
<span>//</span>
<span>#define PWM_PIN PIN_PA6 // 矩形波の出力ピン (ICの2ピン)</span>
<span></span>
<span>// CCMPL の範囲を定義</span>
<span>#define CCMPL_MAX 160 // 25kHz</span>
<span>#define CCMPL_MIN 100 // 50kHz</span>
<span></span>
<span>// 矩形波出力を開始</span>
<span>void startPWM(uint8_t ccmpl) {</span>
<span> TCB0.CTRLA = 0; // TCB0を無効化 (リセット)</span>
<span> TCB0.CCMPL = ccmpl; // 周波数設定 (8ビット分解能)</span>
<span> TCB0.CCMPH = ccmpl / 2; // 50% デューティ比</span>
<span> TCB0.CTRLB = TCB_CCMPEN_bm | TCB_CNTMODE_PWM8_gc; // 8ビットPWMモード</span>
<span> TCB0.CTRLA = TCB_ENABLE_bm | TCB_CLKSEL_CLKDIV2_gc; // 分周2 (10MHzクロック)</span>
<span>}</span>
<span></span>
<span>// 矩形波出力を停止</span>
<span>void stopPWM() {</span>
<span> TCB0.CTRLA = 0; // TCBを無効化</span>
<span>}</span>
<span></span>
<span>void setup() {</span>
<span> pinMode(PWM_PIN, OUTPUT); // 出力ピンの設定 (PA6, ICの2ピン)</span>
<span>}</span>
<span></span>
<span>void loop() {</span>
<span> while (1) {</span>
<span> uint8_t ccmpl = random(CCMPL_MIN, CCMPL_MAX + 1); // CCMPL範囲でランダム選択</span>
<span> startPWM(ccmpl);</span>
<span></span>
<span> uint16_t onTime = random(100, 3001); // 0.1秒~3秒</span>
<span> delay(onTime);</span>
<span></span>
<span> stopPWM();</span>
<span></span>
<span> uint16_t offTime = random(100, 1001); // 0.1秒~2秒</span>
<span> delay(offTime);</span>
<span> }</span>
<span>}</span>
</code>
</div>
</div>
<!-- ダウンロードリンク -->
<p><a href="/wp-content/uploads/source_code/pwm_random.ino" download>💾 ソースコードをダウンロード</a></p>
<script>
function toggleCode(header) {
const content = header.nextElementSibling;
content.style.display = (content.style.display === 'block') ? 'none' : 'block';
}
</script>
✅ ダウンロードリンクの設定方法
- WordPress管理画面 →「メディア」→「新規追加」でファイル
pwm_random.inoをアップロードします。 - アップロード後、表示されるURLをコピーして、以下の部分を書き換えます:
htmlコピーする編集する<a href="/wp-content/uploads/source_code/pwm_random.ino" download>
たとえば、URLが https://example.com/wp-content/uploads/2025/07/pwm_random.ino であれば:
htmlコピーする編集する<a href="https://example.com/wp-content/uploads/2025/07/pwm_random.ino" download>
✅ おまけ:コードの .ino ファイルが必要ですか?
ご希望があれば、上記コードを .ino ファイルにしてお渡しできます(アップロード用にZIP化など)。必要でしたらお知らせください。
何かデザインや機能を追加したい場合(例えば「コピー」ボタンやテーマ変更など)、遠慮なくご相談ください。
あなた:
WordPressの固定ページを開き、カスタムHTMLブロックを挿入してください。の説明にある 「カスタムHTMLブロック」は見当たりませんが?
ChatGPT:
ご安心ください。WordPressの「ブロックエディター(Gutenberg)」では、「カスタムHTML」ブロックはやや見つけづらい場所にありますが、以下の手順で簡単に挿入できます。
✅ 「カスタムHTMLブロック」の挿入手順(WordPress 6.8.x / Cocoon 子テーマ)
① 固定ページを編集画面で開く
- WordPress管理画面 →「固定ページ」→ 該当ページの「編集」をクリック
② 画面左上の「+」ブロック追加ボタンをクリック
- 編集エリアの左上の「+」マークをクリック
または段落の末尾にある「+」でも可
③ 表示された検索バーに「html」と入力
- 「カスタムHTML」ブロックが候補に出ます
④ 「カスタムHTML」をクリックするとブロックが追加されます
- この中に、前回提示したHTMLコードをそのまま貼り付けてください
補足ヒント
- 表示が少し異なる場合は、**画面右上の「ブロック挿入ツール(︙)」→「すべてのブロックを表示」**を試すと見つけやすくなります。
- ブロックタイプを切り替える場合は、既存のブロック左側のアイコンをクリックして「変換」→「カスタムHTML」に変更可能です。
✅ テスト表示するには
貼り付けた後、「プレビュー」→「新しいタブで表示」をクリックすると、表示結果を確認できます。
もし「ブロックエディターではなくクラシックエディターを使っている」場合や、テーマ・プラグインが原因でブロックが制限されている場合もありますので、その場合はお知らせください。対応策をご案内します。
あなた:
提示いただいたプラグインを使う方法も試したみたいので「Enlighter」プラグインを インストールしてみましたが、画像にある状態の表示が行われません。 添付した画像は使われている方の画像をクリップしたものです。
ChatGPT:
ありがとうございます。画像を確認しました。この画像は「クラシックエディター(Classic Editor)」を使用している画面で、Enlighterプラグインの**「ソースコード挿入」ボタン({}アイコン)**が表示されている状態です。
つまり、現在のあなたのWordPress環境では:
✅ 状況の確認と解決ステップ
❓ 「Enlighter」プラグインを有効化したが、アイコン({})が表示されない
これは以下の原因が考えられます:
✅ 1. クラシックエディターが有効になっていない
Enlighter の {} ボタンは、クラシックエディター用のUIです。
✅ 対応方法:
- プラグイン「Classic Editor」をインストール&有効化
→ Classic Editor プラグイン(WordPress.org) - WordPress管理画面 →「設定」→「執筆設定(Writing)」
- 「旧エディター(クラシックエディター)を使用する」を選択
- 「変更を保存」
- 投稿や固定ページの編集画面を開きなおす
{}アイコンが表示されるはずです
✅ 2. クラシックブロックを使う
もし「ブロックエディター(Gutenberg)」を使いたいが、Enlighterを併用したい場合:
方法:
- 「+ブロック追加」→「クラシック」ブロックを選択
- クラシックブロック内で
{}アイコンが表示されるようになります
✅ Enlighter のコード挿入手順(クラシックUI)
{}ボタンを押すと、専用のコード挿入ウィンドウが開く- コードを貼り付けて、言語を選択(例:C++, Arduinoなど)
- 「OK」でコードが
[enlighter] ショートコード形式で埋め込まれます