= 0 ? '+' : '' ) . $gmt_offset; } $timezone_string = sanitize_text_field( $timezone_string ); // Localize script with timezone data. wp_localize_script( 'chronopress-countdown-block-editor', 'chronopressCountdownBlock', array( 'timezone' => $timezone_string, ) ); wp_localize_script( 'chronopress-countdown-block-frontend', 'chronopressCountdownBlock', array( 'timezone' => $timezone_string, ) ); // Register the block using block.json. register_block_type( CHRONOPRESS_COUNTDOWN_BLOCK_PLUGIN_DIR . 'blocks/countdown', array( 'render_callback' => 'chronopress_countdown_block_render_block', ) ); } add_action( 'init', 'chronopress_countdown_block_register_block' ); /** * Conditionally enqueue flip animation styles and ensure frontend script loads. */ function chronopress_countdown_block_enqueue_flip_styles() { // Check if block exists on page. if ( has_block( 'chronopress-countdown-block/countdown' ) ) { // Ensure frontend script is enqueued. wp_enqueue_script( 'chronopress-countdown-block-frontend' ); global $post; if ( $post && has_blocks( $post->post_content ) ) { $blocks = parse_blocks( $post->post_content ); $has_flip_style = false; foreach ( $blocks as $block ) { if ( isset( $block['blockName'] ) && 'chronopress-countdown-block/countdown' === $block['blockName'] ) { $style = isset( $block['attrs']['style'] ) ? sanitize_text_field( $block['attrs']['style'] ) : 'circle'; $allowed_styles = array( 'circle', 'flip', 'linear', 'box' ); if ( in_array( $style, $allowed_styles, true ) && 'flip' === $style ) { $has_flip_style = true; break; } } } if ( $has_flip_style ) { wp_enqueue_style( 'chronopress-countdown-block-flip' ); } } } } add_action( 'wp_enqueue_scripts', 'chronopress_countdown_block_enqueue_flip_styles' );