ウェブ制作

サイト制作のちょっとしたティップスまとめ

ウェブ制作

公開日:2025/05/11

当サイトのリンクには広告が含まれています。

【WordPress】新規投稿時に任意のHTMLを初期値として挿入する方法

WordPressのクラシックエディター環境で、新規投稿時に任意のHTMLを本文の初期値として自動挿入する方法を紹介します。カスタム投稿タイプごとの出し分けにも対応。

クラシックエディターもしくはクラシックブロック限定の方法ではありますが、「WordPressの新規投稿時に、任意のHTMLを本文に初期値としてプリセットする」という機会があったので、備忘録としてメモしておきます。

function preset_default_content( $content, $post ) {
  if ( $post->post_status === 'auto-draft' ) {
    switch ( $post->post_type ) {

      // 投稿
      case 'post':
        $content = '<div class="sample-1"><h2>ここに見出しが入ります</h2><p>ここにテキストが入ります。</p></div>';
        break;

      // 任意のカスタム投稿(例)
      case 'custom-post-name':
        $content = '<div class="sample-2"><h2>ここに見出しが入ります</h2><p>ここにテキストが入ります。</p></div>';
        break;

    }
  }
  return $content;
}
add_filter( 'default_content', 'preset_default_content', 10, 2 );

ブロックエディターなら「パターン(旧:再利用ブロック)」で済む話

事の発端を話すと、先様の要求はこんな感じ。

経緯と要望

  • 雛形となる記事を作ったが、毎回それを複製して使う工程が面倒
  • 新規投稿時、雛形が最初から本文にセットされていたらうれしいなぁ~(チラッ)

それならパターン(※旧:再利用ブロック)機能が使えますよ…で終わらせたかったのだが、中身を見たらクラシックエディター(Advanced Editor Tools ※旧:TinyMCE Advanced)でした。

雛形が決まっているならカスタムフィールドで全部作り直す手も考えたけど、そこまで話を大きくする程でも無いようです。

だったらcontentの初期値としてHTMLを丸ごとぶっ込んでおくかと思った次第。

function preset_default_content( $content, $post ) {
  if ( $post->post_status === 'auto-draft' ) {
    switch ( $post->post_type ) {

      // 投稿
      case 'post':
        $content = '<div class="sample-1"><h2>ここに見出しが入ります</h2><p>ここにテキストが入ります。</p></div>';
        break;

      // 任意のカスタム投稿(例)
      case 'custom-post-name':
        $content = '<div class="sample-2"><h2>ここに見出しが入ります</h2><p>ここにテキストが入ります。</p></div>';
        break;

    }
  }
  return $content;
}
add_filter( 'default_content', 'preset_default_content', 10, 2 );

条件分岐で投稿タイプ毎にHTMLを指定する事も可能

この仕様で特に不都合は無いようでした。今後カスタム投稿が増えても、switch文の条件を追加するだけで済みます。

post_status === 'auto-draft' という条件を付けたので「新規投稿」時のみに初期HTMLを挿入します。すでに公開・保存済みの投稿には影響を与えません。

ちなみに上記コードはクラシックエディター用ですが、これをそのままブロックエディターで開くと、一応クラシックブロックとして読み込んでくれます。

小技として参考になれば幸いです。

上に戻る