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(
''
. '%3$s
'
. '',
$extra_class,
$placeholder_label,
$svg
);
}
add_filter( 'render_block', 'blanky_featured_image_fallback', 10, 2 );