見出しに限らず、本文内に〇〇があったらAとして、なかったらBとして処理をするという条件分岐のコードメモです。
自作した目次の出力をH2タグの数で自動的に表示/非表示が切り替わるようコントロールさせたいという主旨で作ったコードをメモコードとして以下に残しておきますが、条件を変えればいろいろなことに使えると思います。
本ページ掲載のコードを使用するときは
本ページで掲載しているコードは、以下に了承した上で使用ください
- コードは商用・非商用問わず自由に使っていただいて構いませんが、コード追加による不具合やトラブルが発生しても当方では一切責任を負いません
- コードは有効化しているテーマのfunctions.php、style.cssなどへ追加することで機能します。それらのファイルへの変更を行うことに不安のある方は使用しないでください
- コードは本ページの公開日時点で私の環境において動作したものです。WordPressバージョン他環境の違いによって動作しないことがあります
- コードは、セキュリティ、コードの正確さなどにおいて完全なものではありません。中には紹介するコードを簡略化するために省略している部分があるものもありますので、ご自身でコードを十分に検証し、必要な部分の編集を行った上で使用するようにしてください
- 掲載しているのは参考コードです。自身の環境に合わせるための編集はご自身で対応いただく必要があります(コメント欄等から質問いただいても基本回答は致しません)
- 掲載しているコードの転載を禁じます(SNSで紹介いただいたり、本ページへのリンクを張っていただくことは大歓迎です)
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()関数を使って、本文内に挿入した同期パターン(旧再利用ブロック)も含めて数えるようにしています。
コメントを残す