見出しタグに<span>を自動追加する

目次

カスタマイズ前(デフォルト)の出力

<h2 class="wp-block-heading">...</h2>

<span>があった方がカスタマイズしやすい。ショートコートで<span>追加してもいいけど、使用頻度が高いので、いっそ強制的に入れたろか。

カスタマイズ後の出力

対象は<h2><h6>

<h2 class="wp-block-heading"><span>...</span></h2>

手順

functions.phpに以下のコードを追加する

function wporg_block_wrapper( $block_content, $block ) {
  if ( $block['blockName'] === 'core/heading' ) {
    if (preg_match("/h2/", $block["innerHTML"])) {
      return preg_replace(
      '/<h2(.*?)>(.*?)<\/h2>/',
      '<h2$1><span>$2</span></h2>',
      $block_content);
    }
    elseif (preg_match("/h3/", $block["innerHTML"])) {
      return preg_replace(
      '/<h3(.*?)>(.*?)<\/h3>/',
      '<h3$1><span>$2</span></h3>',
      $block_content);
    }
    elseif (preg_match("/h4/", $block["innerHTML"])) {
      return preg_replace(
      '/<h4(.*?)>(.*?)<\/h4>/',
      '<h4$1><span>$2</span></h4>',
      $block_content);
    }
    elseif (preg_match("/h5/", $block["innerHTML"])) {
      return preg_replace(
      '/<h5(.*?)>(.*?)<\/h5>/',
      '<h5$1><span>$2</span></h5>',
      $block_content);
    }
    elseif (preg_match("/h6/", $block["innerHTML"])) {
      return preg_replace(
      '/<h6(.*?)>(.*?)<\/h6>/',
      '<h6$1><span>$2</span></h6>',
      $block_content);
    }
    else { 
      return $block_content;
    }
  }
  return $block_content;
}
add_filter( 'render_block', 'wporg_block_wrapper', 10, 2 );

以上!

目次