Crea la salida del código corto de la lista de reproducción.

Descripción

Esto implementa la funcionalidad del código corto de la lista de reproducción para mostrar una colección de archivos de audio o video de WordPress en una publicación.

Parámetros

$ attr

(formación)(Requerido)Matriz de atributos de lista de reproducción predeterminados.

  • ‘escribe’
    (cuerda) Tipo de lista de reproducción para mostrar. Acepta ‘audio’ o ‘video’. ‘Audio’ predeterminado.
  • ‘pedido’
    (cuerda) Designa el orden ascendente o descendente de los elementos de la lista de reproducción. Acepta ‘ASC’, ‘DESC’. ‘ASC’ predeterminado.
  • ‘orderby’
    (cuerda) Cualquier columna o columnas para ordenar la lista de reproducción. Si se pasan $ ids, este valor predeterminado es el orden de la matriz $ ids (‘post__in’). De lo contrario, el valor predeterminado es ‘ID de orden de menú’.
  • ‘identificación’
    (En t) Si no hay una matriz $ ids explícita, este parámetro determinará qué archivos adjuntos se utilizan para la lista de reproducción. El valor predeterminado es el ID de publicación actual.
  • ‘ids’
    (formación) Crea una lista de reproducción a partir de estos ID de archivos adjuntos explícitos. Si está vacío, se creará una lista de reproducción a partir de todos los archivos adjuntos de $ tipo de $ id. Vacío predeterminado.
  • ‘excluir’
    (formación) Lista de ID de archivos adjuntos específicos para excluir de la lista de reproducción. Vacío predeterminado.
  • ‘estilo’
    (cuerda) Estilo de lista de reproducción para usar. Acepta ‘claro’ u ‘oscuro’. ‘Luz’ por defecto.
  • ‘lista de canciones’
    (bool) Ya sea para mostrar u ocultar la lista de reproducción. Verdadero por defecto.
  • ‘tracknumbers’
    (bool) Ya sea para mostrar u ocultar los números junto a las entradas en la lista de reproducción. Verdadero por defecto.
  • ‘imágenes’
    (bool) Muestre u oculte la miniatura de video o audio (imagen destacada / miniatura de publicación). Verdadero por defecto.
  • ‘artistas’
    (bool) Ya sea para mostrar u ocultar el nombre del artista en la lista de reproducción. Verdadero por defecto.

Regreso

(cuerda) Salida de lista de reproducción. Cadena vacía si el tipo pasado no es compatible.

Fuente

Expediente: wp-includes / media.php

function wp_playlist_shortcode( $attr ) 
	global $content_width;
	$post = get_post();

	static $instance = 0;
	$instance++;

	if ( ! empty( $attr['ids'] ) ) 
		// 'ids' is explicitly ordered, unless you specify otherwise.
		if ( empty( $attr['orderby'] ) ) 
			$attr['orderby'] = 'post__in';
		
		$attr['include'] = $attr['ids'];
	

	/**
	 * Filters the playlist output.
	 *
	 * Returning a non-empty value from the filter will short-circuit generation
	 * of the default playlist output, returning the passed value instead.
	 *
	 * @since 3.9.0
	 * @since 4.2.0 The `$instance` parameter was added.
	 *
	 * @param string $output   Playlist output. Default empty.
	 * @param array  $attr     An array of shortcode attributes.
	 * @param int    $instance Unique numeric ID of this playlist shortcode instance.
	 */
	$output = apply_filters( 'post_playlist', '', $attr, $instance );

	if ( ! empty( $output ) ) 
		return $output;
	

	$atts = shortcode_atts(
		array(
			'type'         => 'audio',
			'order'        => 'ASC',
			'orderby'      => 'menu_order ID',
			'id'           => $post ? $post->ID : 0,
			'include'      => '',
			'exclude'      => '',
			'style'        => 'light',
			'tracklist'    => true,
			'tracknumbers' => true,
			'images'       => true,
			'artists'      => true,
		),
		$attr,
		'playlist'
	);

	$id = (int) $atts['id'];

	if ( 'audio' !== $atts['type'] ) 
		$atts['type'] = 'video';
	

	$args = array(
		'post_status'    => 'inherit',
		'post_type'      => 'attachment',
		'post_mime_type' => $atts['type'],
		'order'          => $atts['order'],
		'orderby'        => $atts['orderby'],
	);

	if ( ! empty( $atts['include'] ) ) 
		$args['include'] = $atts['include'];
		$_attachments    = get_posts( $args );

		$attachments = array();
		foreach ( $_attachments as $key => $val ) 
			$attachments[ $val->ID ] = $_attachments[ $key ];
		
	 elseif ( ! empty( $atts['exclude'] ) ) 
		$args['post_parent'] = $id;
		$args['exclude']     = $atts['exclude'];
		$attachments         = get_children( $args );
	 else 
		$args['post_parent'] = $id;
		$attachments         = get_children( $args );
	

	if ( empty( $attachments ) ) 
		return '';
	

	if ( is_feed() ) 
		$output = "n";
		foreach ( $attachments as $att_id => $attachment ) 
			$output .= wp_get_attachment_link( $att_id ) . "n";
		
		return $output;
	

	$outer = 22; // Default padding and border of wrapper.

	$default_width  = 640;
	$default_height = 360;

	$theme_width  = empty( $content_width ) ? $default_width : ( $content_width - $outer );
	$theme_height = empty( $content_width ) ? $default_height : round( ( $default_height * $theme_width ) / $default_width );

	$data = array(
		'type'         => $atts['type'],
		// Don't pass strings to JSON, will be truthy in JS.
		'tracklist'    => wp_validate_boolean( $atts['tracklist'] ),
		'tracknumbers' => wp_validate_boolean( $atts['tracknumbers'] ),
		'images'       => wp_validate_boolean( $atts['images'] ),
		'artists'      => wp_validate_boolean( $atts['artists'] ),
	);

	$tracks = array();
	foreach ( $attachments as $attachment ) 
		$url   = wp_get_attachment_url( $attachment->ID );
		$ftype = wp_check_filetype( $url, wp_get_mime_types() );
		$track = array(
			'src'         => $url,
			'type'        => $ftype['type'],
			'title'       => $attachment->post_title,
			'caption'     => $attachment->post_excerpt,
			'description' => $attachment->post_content,
		);

		$track['meta'] = array();
		$meta          = wp_get_attachment_metadata( $attachment->ID );
		if ( ! empty( $meta ) ) 

			foreach ( wp_get_attachment_id3_keys( $attachment ) as $key => $label ) 
				if ( ! empty( $meta[ $key ] ) ) 
					$track['meta'][ $key ] = $meta[ $key ];
				
			

			if ( 'video' === $atts['type'] ) 
				if ( ! empty( $meta['width'] ) && ! empty( $meta['height'] ) ) 
					$width        = $meta['width'];
					$height       = $meta['height'];
					$theme_height = round( ( $height * $theme_width ) / $width );
				 else 
					$width  = $default_width;
					$height = $default_height;
				

				$track['dimensions'] = array(
					'original' => compact( 'width', 'height' ),
					'resized'  => array(
						'width'  => $theme_width,
						'height' => $theme_height,
					),
				);
			
		

		if ( $atts['images'] ) 
			$thumb_id = get_post_thumbnail_id( $attachment->ID );
			if ( ! empty( $thumb_id ) ) 
				list( $src, $width, $height ) = wp_get_attachment_image_src( $thumb_id, 'full' );
				$track['image']               = compact( 'src', 'width', 'height' );
				list( $src, $width, $height ) = wp_get_attachment_image_src( $thumb_id, 'thumbnail' );
				$track['thumb']               = compact( 'src', 'width', 'height' );
			 else 
				$src            = wp_mime_type_icon( $attachment->ID );
				$width          = 48;
				$height         = 64;
				$track['image'] = compact( 'src', 'width', 'height' );
				$track['thumb'] = compact( 'src', 'width', 'height' );
			
		

		$tracks[] = $track;
	
	$data['tracks'] = $tracks;

	$safe_type  = esc_attr( $atts['type'] );
	$safe_style = esc_attr( $atts['style'] );

	ob_start();

	if ( 1 === $instance ) 
		/**
		 * Prints and enqueues playlist scripts, styles, and JavaScript templates.
		 *
		 * @since 3.9.0
		 *
		 * @param string $type  Type of playlist. Possible values are 'audio' or 'video'.
		 * @param string $style The 'theme' for the playlist. Core provides 'light' and 'dark'.
		 */
		do_action( 'wp_playlist_scripts', $atts['type'], $atts['style'] );
	
	?>
<divclass="wp-playlist wp-echo$safe_type;?>-playlist wp-playlist-echo$safe_style;?>">if('audio'===$atts['type']):?><divclass="wp-playlist-current-item">div>endif?><echo$safe_type;?>controls="controls"preload="none"width="echo(int)$theme_width;?>"if('video'===$safe_type)echo' height="',(int)$theme_height,'"';?>>echo$safe_type;?>><divclass="wp-playlist-next">div><divclass="wp-playlist-prev">div><noscript><ol>foreach($attachmentsas$att_id=>$attachment)printf('
  • %s
  • '
    ,wp_get_attachment_link($att_id));?>
    ol>noscript><scripttype="application/json"class="wp-playlist-script">echowp_json_encode($data);?>script>div>returnob_get_clean();

    Relacionado

    Usos

    Usos Descripción
    wp-includes / post.php:get_children ()

    Recupere todos los elementos secundarios de la identificación del padre de la publicación.

    wp-includes / functions.php:wp_json_encode ()

    Codifique una variable en JSON, con algunas comprobaciones de cordura.

    wp-includes / functions.php:wp_validate_boolean ()

    Filtrar / validar una variable como booleana.

    wp-includes / formatting.php:esc_attr ()

    Escapar de atributos HTML.

    wp-includes / query.php:is_feed ()

    Determina si la consulta es para un feed.

    wp-includes / functions.php:wp_check_filetype ()

    Recupere el tipo de archivo del nombre del archivo.

    wp-includes / functions.php:wp_get_mime_types ()

    Recupere la lista de tipos de mimo y extensiones de archivo.

    wp-includes / shortcodes.php:shortcode_atts ()

    Combine atributos de usuario con atributos conocidos y complete los valores predeterminados cuando sea necesario.

    wp-includes / plugin.php:aplicar_filtros ()

    Llama a las funciones de devolución de llamada que se han agregado a un enlace de filtro.

    wp-includes / plugin.php:do_action ()

    Ejecuta funciones enganchadas a un gancho de acción específico.

    wp-includes / post-thumbnail-template.php:get_post_thumbnail_id ()

    Recuperar el ID de la miniatura de la publicación.

    wp-includes / post-template.php:wp_get_attachment_link ()

    Recupere el enlace de una página adjunta usando una imagen o icono, si es posible.

    wp-includes / media.php:wp_get_attachment_id3_keys ()

    Devuelve claves útiles que se utilizan para buscar datos de los metadatos almacenados de un archivo adjunto.

    wp-includes / media.php:post_playlist

    Filtra la salida de la lista de reproducción.

    wp-includes / media.php:wp_playlist_scripts

    Imprime y pone en cola scripts, estilos y plantillas de JavaScript de listas de reproducción.

    wp-includes / media.php:wp_get_attachment_image_src ()

    Recupera una imagen para representar un archivo adjunto.

    wp-includes / post.php:wp_mime_type_icon ()

    Recupere el icono de un tipo o archivo adjunto MIME.

    wp-includes / post.php:wp_get_attachment_url ()

    Recuperar el URL para un archivo adjunto.

    wp-includes / post.php:wp_get_attachment_metadata ()

    Recupera metadatos de archivos adjuntos para la identificación del archivo adjunto.

    wp-includes / post.php:get_posts ()

    Recupera una serie de las últimas publicaciones o publicaciones que coinciden con los criterios dados.

    wp-includes / post.php:get_post ()

    Recupera los datos de la publicación con un ID de publicación o un objeto de publicación.

    Registro de cambios

    Versión Descripción
    3.9.0 Introducido.