WordPress 6.9で追加された「アコーディオン」ブロックについて

Cocoonカスタマイズ集
この記事は約13分で読めます。
記事内に広告が含まれています。

はじめに

WordPress 6.9で、新たに「アコーディオン」ブロックが追加されました。
クリックで開閉できるブロックとしては、これまでにWordPress標準の「詳細」ブロックや、Cocoon独自の「アコーディオン(トグル)」ブロックがありました。

この記事では、それぞれのブロックの特徴を比較しながら説明します。

それぞれのブロックの特徴

表1に、各ブロックの主な違いをまとめます。

各ブロックの違い
項目アコーディオン詳細Cocoonアコーディオン(トグル)
初期表示で開くアイテムごとに「デフォルトで開く」で設定可能アイテムごとに「デフォルトで開く」で設定可能不可
クリックした1つだけ開く「自動で閉じる」で設定可能name属性により可能不可
見出しタグ見出し(h1~h6)のみ選択可能文字文字
HTMLの構造独自<details>タグ独自

「詳細」ブロックはWordPress 6.8からname属性が設定可能になり、同じ値を指定することで複数ブロックをグループ化し、クリックした1つだけを開く挙動が実現できます。

また、「アコーディオン」ブロックの見出しは<h1>~<h6>タグで出力されるため、目次に反映される点に注意が必要です。

「アコーディオン」ブロックの見出しを目次に表示させない方法

アコーディオン項目やアコーディオン見出しは、Gutenbergエディター上のスタイル設定から背景色や枠線などを自由に調整できます。

そこで、アコーディオン見出しを<h1>~<h6>タグではなく<div>タグに変更します。

完成イメージ

生物の記憶とスタンド能力を、CDのような形状の「DISC」にして取り出す、能力を持つ。

ホワイトスネイクと、緑色の赤ちゃんが融合してできたスタンド。半径約3km以内にある物体の重力の方向を、本体のプッチ神父を中心に、逆転させる能力を持つ。

C-MOONが進化したスタンド。全世界の時を、加速させる能力を持つ。

実装手順

以下の手順で実装します。

  • ラベル
    Gutenbergエディターでの設定
    Gutenbergエディター

    以下に手順を示します。

    1. 「アコーディオン」ブロックを配置します。
    2. 「アコーデォオン」ブロックに高度な設定→追加CSSクラスにdivと入力します。
  • ラベル
    PHPを追加

    以下のコードをfunctions.phpに追加します。

    add_filter('render_block_core/accordion', function ($block_content, $block) {
      $class_name = $block['attrs']['className'] ?? '';
    
      // クラス名が空、または「div」が含まれていない場合はそのまま返却
      if (empty($class_name) || !str_contains($class_name, 'div')) {
        return $block_content;
      }
    
      // 見出しタグの開始部分をdivタグに置換
      $block_content = preg_replace(
        '#<h[1-6]([^>]*)class="([^"]*wp-block-accordion-heading[^"]*)"([^>]*)>#',
        '<div$1class="$2"$3>',
        $block_content
      );
    
      // 見出しタグの終了部分をdivタグの終了に置換
      $block_content = preg_replace('#</h[1-6]>#', '</div>', $block_content);
    
      return $block_content;
    }, 10, 2);

参考:「アコーディオン」ブロッのデザインを変更する方法

FAQ」ブロックのデザインに変更

「FAQ」ブロックの見出しを目次に反映する方法を紹介しました。

一方、「アコーディオン」ブロックの見出しは標準で目次に反映されます。

そこで、「アコーディオン」ブロックのデザインを「FAQ」ブロック(アコーディオン)風に変更します。

完成イメージ

親の借金返済のためデビルハンターをしていた少年で、裏切りに遭い死亡するも「チェンソーの悪魔」ポチタと契約し、悪魔の心臓を持つ「チェンソーマン」として蘇ったダークヒーローです。

公安対魔特異4課で働くデビルハンターです。 人間のように見えますが頭に2本の角があり、「血の悪魔」です。

ソ連から送り込まれたスパイで、「爆弾の悪魔」と融合した人間兵器(武器人間)です。

実装手順

以下の手順で実装します。

  • ラベル
    Gutenbergエディターでの設定

    以下に手順を示します。

    1. 「アコーディオン」ブロックを配置します。
    2. 「アコーデォオン」ブロックに高度な設定→追加CSSクラスにmy-faqと入力します。
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。
    本コードはスキン「メイド・イン・ヘブン」に合わせたものです。

    .my-faq {
      * {
        font-size: 16px;
        line-height: 1.8;
      }
    
      .wp-block-accordion-item {
        border: 1px solid #ccc;
        margin-bottom: 30px;
    
        /* Qアイコンの付与 */
        > .wp-block-accordion-heading .wp-block-accordion-heading__toggle::before {
          align-self: flex-start;
          color: #b7282e;
          content: 'Q';
          margin-right: 0.5em;
          text-align: center;
          width: 1.8em;
        }
    
        /* Aアイコンの付与 */
        > .wp-block-accordion-panel::before {
          color: #007bbb;
          content: 'A';
          display: block;
          font-weight: bold;
          left: 15px;
          position: absolute;
          text-align: center;
          width: 1.8em;
        }
    
        /* 開閉パネルのスタイル */
        &.is-open > .wp-block-accordion-panel {
          padding: 15px;
          padding-left: calc(15px + 1.8em + 5px);
          position: relative;
        }
      }
    
      .wp-block-accordion-heading {
        background-color: #ccc;
        border: unset;
        margin: 0;
        padding: 15px;
    
        .wp-block-accordion-heading__toggle {
          padding: 0;
        }
    
        .wp-block-accordion-heading__toggle-title {
          text-decoration: none !important;
        }
      }
    }

「タイムライン」ブロックのデザインに変更

「タイムライン」ブロックの見出しを目次に反映する方法を紹介しました。

一方、「アコーディオン」ブロックの見出しは標準で目次に反映されます。

そこで、「アコーディオン」ブロックのデザインを「タイムライン」ブロック風に変更します。

完成イメージ

親の借金返済のためデビルハンターをしていた少年で、裏切りに遭い死亡するも「チェンソーの悪魔」ポチタと契約し、悪魔の心臓を持つ「チェンソーマン」として蘇ったダークヒーローです。

公安対魔特異4課で働くデビルハンターです。 人間のように見えますが頭に2本の角があり、「血の悪魔」です。

ソ連から送り込まれたスパイで、「爆弾の悪魔」と融合した人間兵器(武器人間)です。

実装手順

以下の手順で実装します。

  • ラベル
    Gutenbergエディターでの設定

    以下に手順を示します。

    1. 「アコーディオン」ブロックを配置します。
    2. 「アコーデォオン」ブロックに高度な設定→追加CSSクラスにmy-timelimeと入力します。
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    .my-timeline {
      counter-reset: step;
      position: relative;
    
      /* 縦線 */
      &::before {
        background-color: #eee;
        content: '';
        display: block;
        height: 100%;
        left: 120px;
        position: absolute;
        width: 3px;
      }
    
      /* アイテム */
      .wp-block-accordion-item {
        margin-left: 120px;
        padding: 15px 0 0 20px;
        position: relative;
    
        &:last-child {
          padding-bottom: 15px;
        }
    
        /* ラベル */
        &::before {
          content: 'STEP' counter(step);
          counter-increment: step;
          font-size: 14px;
          font-weight: normal;
          left: -120px;
          position: absolute;
          text-align: right;
          top: 16px;
          width: 90px;
        }
    
        /* ポイント */
        &::after {
          background-color: #6fc173;
          border-radius: 100%;
          content: '';
          display: block;
          height: 16px;
          left: -7px;
          position: absolute;
          top: 20px;
          width: 16px;
        }
      }
    
      /* 見出し */
      .wp-block-accordion-heading {
        .body & {
          background-color: unset;
          border: 0;
          font-size: inherit;
          line-height: inherit;
          margin: 0;
          padding: 0;
    
          &::before,
          &::after {
            content: none;
          }
        }
      }
    
      .wp-block-accordion-heading__toggle {
        .body & {
          padding: 0;
        }
    
        &:hover .wp-block-accordion-heading__toggle-title {
          text-decoration: none;
        }
      }
    }

さいごに

今回紹介した方法を使えば、WordPress 6.9で追加された「アコーディオン」ブロックの見出しタグを <h1>〜<h6>から<div>タグへ変更でき、目次への反映を防ぎつつデザインの自由度を高めることができます。
テーマや構造化データへの影響を抑えながら、より柔軟なUI表現が可能になるため、FAQなどにも安心して活用できます。

タイトルとURLをコピーしました