> */ public static function attributes() { return array( 'format' => array( 'type' => 'string', 'default' => BCGN_Settings::get( 'default_format' ), ), 'value' => array( 'type' => 'string', 'default' => '', ), 'scale' => array( 'type' => 'number', 'default' => (float) BCGN_Settings::get( 'scale' ), ), 'height' => array( 'type' => 'number', 'default' => (int) BCGN_Settings::get( 'height' ), ), 'text' => array( 'type' => 'boolean', 'default' => (bool) BCGN_Settings::get( 'text' ), ), 'bar_color' => array( 'type' => 'string', 'default' => BCGN_Settings::get( 'bar_color' ), ), 'bg_color' => array( 'type' => 'string', 'default' => BCGN_Settings::get( 'bg_color' ), ), 'padding' => array( 'type' => 'number', 'default' => 0, ), 'class' => array( 'type' => 'string', 'default' => 'bcgn-barcode', ), 'align' => array( 'type' => 'string', 'default' => '', ), ); } /** * Render the shortcode. * * @param array|string $atts Shortcode attributes. * @param string $content Enclosed content, used as the value when set. * @return string */ public static function render( $atts, $content = '' ) { $defaults = array(); foreach ( self::attributes() as $key => $spec ) { $defaults[ $key ] = $spec['default']; } $args = shortcode_atts( $defaults, $atts, 'barcodegen' ); $raw_atts = is_array( $atts ) ? $atts : array(); $value = isset( $raw_atts['value'] ) ? trim( wp_unslash( $raw_atts['value'] ) ) : ''; if ( '' === $value && '' !== trim( (string) $content ) ) { $value = trim( wp_unslash( $content ) ); } if ( '' === $value ) { return self::failure( __( 'No barcode value was provided.', 'barcodegen' ) ); } $options = array( 'scale' => $args['scale'], 'height' => $args['height'], 'text' => $args['text'], 'bar_color' => $args['bar_color'], 'bg_color' => $args['bg_color'], 'padding' => $args['padding'], 'class' => 'bcgn-barcode' . ( '' !== $args['class'] ? ' ' . $args['class'] : '' ), ); $svg = BCGN_Barcode::svg( $args['format'], $value, $options ); if ( is_wp_error( $svg ) ) { return self::failure( $svg->get_error_message(), $args['format'], $value ); } $svg = self::wrap_align( $svg, $args['align'] ); $credit = BCGN_Settings::get( 'credit' ); if ( $credit ) { $svg .= self::credit_markup(); } return $svg; } /** * Wrap the barcode in an alignment container. * * @param string $svg Rendered SVG. * @param string $align Alignment keyword. * @return string */ protected static function wrap_align( $svg, $align ) { $align = strtolower( (string) $align ); if ( ! in_array( $align, array( 'left', 'center', 'right' ), true ) ) { return $svg; } return '
%s %s
', esc_html__( 'Barcodegen:', 'barcodegen' ), esc_html( $message ) ); } return sprintf( "\n", esc_attr( $message ), esc_attr( $format ), esc_attr( $value ) ); } }