82 lines
2.4 KiB
PHP
82 lines
2.4 KiB
PHP
<?php
|
|
/**
|
|
* Server-side rendering of the `core/playlist-track` block.
|
|
*
|
|
* @package WordPress
|
|
*/
|
|
|
|
/**
|
|
* Renders the `core/playlist-track` block on server.
|
|
*
|
|
* @since 7.1.0
|
|
*
|
|
* @param array $attributes The block attributes.
|
|
* @param string $content The block content.
|
|
* @param WP_Block|null $block The block instance.
|
|
*
|
|
* @return string Returns the Playlist Track.
|
|
*/
|
|
function render_block_core_playlist_track( $attributes, $content = '', $block = null ) {
|
|
if ( empty( $attributes['id'] ) ) {
|
|
return '';
|
|
}
|
|
|
|
$wrapper_attributes = get_block_wrapper_attributes();
|
|
$show_images = true;
|
|
if ( $block instanceof WP_Block && isset( $block->context['showImages'] ) ) {
|
|
$show_images = $block->context['showImages'];
|
|
}
|
|
|
|
$artist = $attributes['artist'] ?? '';
|
|
$image = $attributes['image'] ?? '';
|
|
$alt = $attributes['imageAlt'] ?? '';
|
|
$length = $attributes['length'] ?? '';
|
|
$title = isset( $attributes['title'] ) && ! empty( $attributes['title'] ) ? $attributes['title'] : __( 'Unknown title' );
|
|
|
|
$html = '<li ' . $wrapper_attributes . '>';
|
|
$html .= '<button data-wp-on--click="actions.changeTrack" data-wp-bind--aria-current="state.isCurrentTrack" class="wp-block-playlist-track__button">';
|
|
|
|
if ( $show_images && $image ) {
|
|
$html .= '<img class="wp-block-playlist-track__image" src="' . esc_url( $image ) . '" alt="' . esc_attr( $alt ) . '" />';
|
|
}
|
|
|
|
$html .= '<span class="wp-block-playlist-track__content">';
|
|
if ( $title ) {
|
|
$html .= '<span class="wp-block-playlist-track__title">' . esc_html( $title ) . '</span>';
|
|
}
|
|
if ( $artist ) {
|
|
$html .= '<span class="wp-block-playlist-track__artist">' . esc_html( $artist ) . '</span>';
|
|
}
|
|
$html .= '</span>';
|
|
|
|
if ( $length ) {
|
|
$html .= '<span class="wp-block-playlist-track__length">';
|
|
$html .= '<span class="screen-reader-text">' . esc_html__( 'Duration:' ) . ' </span>';
|
|
$html .= esc_html( $length );
|
|
$html .= '</span>';
|
|
}
|
|
|
|
$html .= '<span class="screen-reader-text" data-wp-text="state.trackButtonActionLabel">';
|
|
$html .= esc_html__( 'Play' );
|
|
$html .= '</span>';
|
|
$html .= '</button>';
|
|
$html .= '</li>';
|
|
|
|
return $html;
|
|
}
|
|
|
|
/**
|
|
* Registers the `core/playlist-track` block on server.
|
|
*
|
|
* @since 7.1.0
|
|
*/
|
|
function register_block_core_playlist_track() {
|
|
register_block_type_from_metadata(
|
|
__DIR__ . '/playlist-track',
|
|
array(
|
|
'render_callback' => 'render_block_core_playlist_track',
|
|
)
|
|
);
|
|
}
|
|
add_action( 'init', 'register_block_core_playlist_track' );
|