Personal WP Customization Notes (PWCN)

WordPressで実際に行ったカスタマイズの記録、発生した問題への対処時のメモ、ブロックテーマのカスタマイズなど

本文内の見出しの数によって条件分岐を行う方法

見出しに限らず、本文内に〇〇があったらAとして、なかったらBとして処理をするという条件分岐のコードメモです。

自作した目次の出力をH2タグの数で自動的に表示/非表示が切り替わるようコントロールさせたいという主旨で作ったコードをメモコードとして以下に残しておきますが、条件を変えればいろいろなことに使えると思います。

function sample_headers_echo_function(){
// 本文の取得
$content = do_blocks(get_the_content());

// 見出しタグの検索
$headers = array();
preg_match_all('/<h([2])[^>]*>/', $content, $headers);

// 見出しの数の取得
$header_count = count($headers[1]);

// 見出しの数によって出力を分ける
if($header_count < 3){
	echo $header_count.'/H2ヘッダーの数は少ない';
}else{
	echo $header_count.'/H2ヘッダーの数が多い';
}
}
add_action('wp_head','sample_headers_echo_function');

上記コードでは、赤字の行で[2]としてH2見出しタグのみを抽出していますが、[1-6]とすればH1~H6タグすべての数を数えて出力することができます。

また、アクションフックでヘッダーに出力(フロントエンドの上部欄外)に見出しの数が3未満の場合は「見出しの数/H2ヘッダーの数は少ない」と出力され、3以上の場合は「見出しの数/H2ヘッダーの数が多い」と出力されるので、一度テスト的にコードをfunctions.phpへコピペして動作確認した上で、いろいろな分岐処理に使うといいと思います。

本文の取得のところでdo_blocks()関数を使って、本文内に挿入した同期パターン(旧再利用ブロック)も含めて数えるようにしています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※リンクやURLの挿入されているコメントは無視します

WordPressサイトのカスタマイズ方法、機能追加を行うプログラム例など
functions.phpからセキュリティヘッダーを追加する方法(例)