78 lines
2.4 KiB
PHP
78 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* Star-rating control partial.
|
|
*
|
|
* Theme-overridable. Copy to `yourtheme/woocommerce/order/star-rating.php`.
|
|
*
|
|
* @see https://woocommerce.com/document/template-structure/
|
|
* @package WooCommerce\Templates
|
|
* @version 10.8.0
|
|
*
|
|
* @var string $name Form field name (e.g. `reviews[123][rating]`).
|
|
* @var string $id_prefix Prefix used for unique radio ids.
|
|
* @var string $label_id Existing label id; bound via aria-labelledby.
|
|
* @var int $selected Pre-selected value (0 = none).
|
|
* @var array<int, string> $labels Map of value (1-5) to caption text.
|
|
*/
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
$caption_id = $id_prefix . '-caption';
|
|
$initial_caption = $selected > 0 && isset( $labels[ $selected ] ) ? $labels[ $selected ] : '';
|
|
|
|
// Reverse so row-reverse + `~` selectors can fill stars 1..N without `:has()`.
|
|
$reversed = array_reverse( $labels, true );
|
|
?>
|
|
<div
|
|
class="woocommerce-star-rating"
|
|
role="radiogroup"
|
|
aria-labelledby="<?php echo esc_attr( $label_id ); ?>"
|
|
aria-describedby="<?php echo esc_attr( $caption_id ); ?>"
|
|
>
|
|
<div class="woocommerce-star-rating__stars">
|
|
<?php foreach ( $reversed as $value => $label ) : ?>
|
|
<?php
|
|
$input_id = $id_prefix . '-' . $value;
|
|
$checked = $value === $selected;
|
|
?>
|
|
<input
|
|
class="woocommerce-star-rating__input"
|
|
type="radio"
|
|
id="<?php echo esc_attr( $input_id ); ?>"
|
|
name="<?php echo esc_attr( $name ); ?>"
|
|
value="<?php echo esc_attr( (string) $value ); ?>"
|
|
data-label="<?php echo esc_attr( $label ); ?>"
|
|
<?php checked( $checked ); ?>
|
|
/>
|
|
<label class="woocommerce-star-rating__star" for="<?php echo esc_attr( $input_id ); ?>">
|
|
<span class="screen-reader-text">
|
|
<?php
|
|
printf(
|
|
/* translators: 1: numeric star rating 2: label text e.g. "Good" */
|
|
esc_html__( '%1$d out of 5 stars: %2$s', 'woocommerce' ),
|
|
(int) $value,
|
|
esc_html( $label )
|
|
);
|
|
?>
|
|
</span>
|
|
<svg
|
|
class="woocommerce-star-rating__icon"
|
|
width="24"
|
|
height="24"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
focusable="false"
|
|
>
|
|
<path d="M12 2.5l2.92 6.36 6.99.74-5.21 4.74 1.46 6.86L12 17.77l-6.16 3.43 1.46-6.86L2.09 9.6l6.99-.74L12 2.5z" />
|
|
</svg>
|
|
</label>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
|
|
<span
|
|
id="<?php echo esc_attr( $caption_id ); ?>"
|
|
class="woocommerce-star-rating__caption"
|
|
aria-live="polite"
|
|
><?php echo esc_html( $initial_caption ); ?></span>
|
|
</div>
|