array( 'name' => __( 'サイドバー', 'ai-creative-studio' ), 'description' => __( 'メインサイドバーに表示されるウィジェットエリア', 'ai-creative-studio' ), ), 'header-right' => array( 'name' => __( 'ヘッダー右', 'ai-creative-studio' ), 'description' => __( 'ヘッダー右側に表示されるウィジェットエリア', 'ai-creative-studio' ), ), 'header-below' => array( 'name' => __( 'ヘッダー下', 'ai-creative-studio' ), 'description' => __( 'ヘッダー直下に表示されるウィジェットエリア', 'ai-creative-studio' ), ), 'title-below' => array( 'name' => __( 'タイトル下', 'ai-creative-studio' ), 'description' => __( '記事タイトル下に表示されるウィジェットエリア', 'ai-creative-studio' ), ), 'content-middle' => array( 'name' => __( '記事中盤', 'ai-creative-studio' ), 'description' => __( '記事本文の中間に自動挿入されるウィジェットエリア', 'ai-creative-studio' ), ), 'content-below' => array( 'name' => __( '記事下', 'ai-creative-studio' ), 'description' => __( '記事本文下に表示されるウィジェットエリア', 'ai-creative-studio' ), ), 'footer-above' => array( 'name' => __( 'フッター上', 'ai-creative-studio' ), 'description' => __( 'フッター上部に表示されるウィジェットエリア', 'ai-creative-studio' ), ), 'footer-right' => array( 'name' => __( 'フッター右', 'ai-creative-studio' ), 'description' => __( 'フッター右側(コピーライト横)に表示されるウィジェットエリア', 'ai-creative-studio' ), ), ); foreach ( $widget_areas as $id => $area ) { register_sidebar( array( 'name' => $area['name'], 'id' => $id, 'description' => $area['description'], 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ) ); } } add_action( 'widgets_init', 'aics_register_extended_widgets', 11 ); /** * 記事中盤ウィジェットの自動挿入 */ function aics_insert_middle_widget( $content ) { // 投稿ページ以外、またはウィジェットが設定されていない場合は処理しない if ( ! is_single() || ! is_active_sidebar( 'content-middle' ) ) { return $content; } // ウィジェット出力を取得 ob_start(); ?>
]*>)/i'; if ( preg_match( $pattern, $content ) ) { $content = preg_replace( $pattern, $widget_html . '$1', $content, 1 ); } else { // H2がない場合は、段落の中間あたりに挿入 $paragraphs = explode( '

', $content ); $total_paragraphs = count( $paragraphs ); if ( $total_paragraphs > 3 ) { $insert_position = floor( $total_paragraphs / 2 ); $paragraphs[ $insert_position ] .= $widget_html; $content = implode( '

', $paragraphs ); } } return $content; }