StoreNotices.php
<?php
namespace Automattic\WooCommerce\Blocks\BlockTypes;
use Automattic\WooCommerce\Blocks\Utils\StyleAttributesUtils;
/**
* StoreNotices class.
*/
class StoreNotices extends AbstractBlock {
/**
* Block name.
*
* @var string
*/
protected $block_name = 'store-notices';
/**
* Render the block.
*
* @param array $attributes Block attributes.
* @param string $content Block content.
* @param WP_Block $block Block instance.
*
* @return string | void Rendered block output.
*/
protected function render( $attributes, $content, $block ) {
/**
* This block should be rendered only on the frontend. Woo loads notice
* functions on the front end requests only. So it's safe and handy to
* check for the print notice function existence to short circuit the
* render process on the admin side.
* See WooCommerce::is_request() for the frontend request definition.
*/
if ( ! function_exists( 'wc_print_notices' ) ) {
return $content;
}
ob_start();
woocommerce_output_all_notices();
$notices = ob_get_clean();
if ( ! $notices ) {
return;
}
$classname = isset( $attributes['className'] ) ? $attributes['className'] : '';
$classes_and_styles = StyleAttributesUtils::get_classes_and_styles_by_attributes( $attributes );
if ( isset( $attributes['align'] ) ) {
$classname .= " align{$attributes['align']}";
}
return sprintf(
'<div class="woocommerce wc-block-store-notices %1$s %2$s">%3$s</div>',
esc_attr( $classes_and_styles['classes'] ),
esc_attr( $classname ),
wc_kses_notice( $notices )
);
}
/**
* Get the frontend script handle for this block type.
*
* @param string $key Data to get, or default to everything.
*/
protected function get_block_type_script( $key = null ) {
return null;
}
/**
* Get the frontend style handle for this block type.
*
* @return null
*/
protected function get_block_type_style() {
return null;
}
}