get( 'Version' ) ); /** * Theme setup */ function blanky_theme_setup() { load_theme_textdomain( 'blanky', get_template_directory() . '/languages' ); add_theme_support( 'wp-block-styles' ); add_theme_support( 'editor-styles' ); add_editor_style( 'assets/css/editor-style.css' ); add_theme_support( 'automatic-feed-links' ); add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script' ) ); add_theme_support( 'post-thumbnails' ); add_theme_support( 'title-tag' ); add_theme_support( 'custom-logo' ); } add_action( 'after_setup_theme', 'blanky_theme_setup' ); /** * Register block pattern categories */ function blanky_register_block_patterns() { register_block_pattern_category( 'blanky_patterns', array( 'label' => __( 'Blanky Patterns', 'blanky' ), 'description' => __( 'Patterns provided by the Blanky theme.', 'blanky' ), 'icon' => 'layout', ) ); } add_action( 'init', 'blanky_register_block_patterns' ); /** * Enqueue theme styles */ function blanky_enqueue_scripts() { wp_enqueue_style( 'blanky-style', get_stylesheet_uri(), array(), BLANKY_VERSION ); } add_action( 'wp_enqueue_scripts', 'blanky_enqueue_scripts' ); /** * アイキャッチ未設定時のフォールバック プレースホルダーを挿入する。 * * WordPress の core/post-featured-image ブロックはアイキャッチが * 設定されていない場合に空文字列を返すため、CSS の :not(:has(img)) では * 対応できない。render_block フィルターで代替 HTML を挿入する。 * * @param string $block_content レンダリング済み HTML。 * @param array $parsed_block パース済みブロック情報。 * @return string */ function blanky_featured_image_fallback( $block_content, $parsed_block ) { // 対象ブロック以外はスキップ if ( 'core/post-featured-image' !== $parsed_block['blockName'] ) { return $block_content; } // アイキャッチがある場合はそのまま返す if ( ! empty( $block_content ) ) { return $block_content; } // blanky-monotone など既存クラスを引き継ぐ $extra_class = ''; if ( ! empty( $parsed_block['attrs']['className'] ) ) { $extra_class = ' ' . esc_attr( $parsed_block['attrs']['className'] ); } $placeholder_label = esc_attr__( 'No featured image', 'blanky' ); // 画像アイコン SVG(アクセシビリティ: aria-hidden) $svg = ''; return sprintf( '
' . '' . '
', $extra_class, $placeholder_label, $svg ); } add_filter( 'render_block', 'blanky_featured_image_fallback', 10, 2 );