function wp_audio_shortcode

Script berikut berguna untuk mencegah link mp3 pada tag code diparse menjadi mp3 player.

function wp_audio_shortcode( $attr, $content = '' ) {
	$post_id = get_post() ? get_the_ID() : 0;

	static $instances = 0;
	$instances++;

	/**
	 * Filter the default audio shortcode output.
	 *
	 * If the filtered output isn't empty, it will be used instead of generating the default audio template.
	 *
	 * @since 3.6.0
	 *
	 * @param string $html      Empty variable to be replaced with shortcode markup.
	 * @param array  $attr      Attributes of the shortcode. @see wp_audio_shortcode()
	 * @param string $content   Shortcode content.
	 * @param int    $instances Unique numeric ID of this audio shortcode instance.
	 */
	$html = apply_filters( 'wp_audio_shortcode_override', '', $attr, $content, $instances );
	if ( '' !== $html )
		return $html;

	$audio = null;

	$default_types = wp_get_audio_extensions();
	$defaults_atts = array(
		'src'      => '',
		'loop'     => '',
		'autoplay' => '',
		'preload'  => 'none'
	);
	foreach ( $default_types as $type )
		$defaults_atts[$type] = '';

	$atts = shortcode_atts( $defaults_atts, $attr, 'audio' );
	extract( $atts );

	$primary = false;
	if ( ! empty( $src ) ) {
		$type = wp_check_filetype( $src, wp_get_mime_types() );
		if ( ! in_array( strtolower( $type['ext'] ), $default_types ) )
			return sprintf( '<a class="wp-embedded-audio" href="%s">%s</a>', esc_url( $src ), esc_html( $src ) );
		$primary = true;
		array_unshift( $default_types, 'src' );
	} else {
		foreach ( $default_types as $ext ) {
			if ( ! empty( $$ext ) ) {
				$type = wp_check_filetype( $$ext, wp_get_mime_types() );
				if ( strtolower( $type['ext'] ) === $ext )
					$primary = true;
			}
		}
	}

	if ( ! $primary ) {
		$audios = get_attached_media( 'audio', $post_id );
		if ( empty( $audios ) )
			return;

		$audio = reset( $audios );
		$src = wp_get_attachment_url( $audio->ID );
		if ( empty( $src ) )
			return;

		array_unshift( $default_types, 'src' );
	}

	/**
	 * Filter the media library used for the audio shortcode.
	 *
	 * @since 3.6.0
	 *
	 * @param string $library Media library used for the audio shortcode.
	 */
	$library = apply_filters( 'wp_audio_shortcode_library', 'mediaelement' );
	if ( 'mediaelement' === $library && did_action( 'init' ) ) {
		wp_enqueue_style( 'wp-mediaelement' );
		wp_enqueue_script( 'wp-mediaelement' );
	}

	/**
	 * Filter the class attribute for the audio shortcode output container.
	 *
	 * @since 3.6.0
	 *
	 * @param string $class CSS class or list of space-separated classes.
	 */
	$atts = array(
		'class'    => apply_filters( 'wp_audio_shortcode_class', 'wp-audio-shortcode' ),
		'id'       => sprintf( 'audio-%d-%d', $post_id, $instances ),
		'loop'     => $loop,
		'autoplay' => $autoplay,
		'preload'  => $preload,
		'style'    => 'width: 100%; visibility: hidden;',
	);

	// These ones should just be omitted altogether if they are blank
	foreach ( array( 'loop', 'autoplay', 'preload' ) as $a ) {
		if ( empty( $atts[$a] ) )
			unset( $atts[$a] );
	}

	$attr_strings = array();
	foreach ( $atts as $k => $v ) {
		$attr_strings[] = $k . '="' . esc_attr( $v ) . '"';
	}

	$html = '';
	if ( 'mediaelement' === $library && 1 === $instances )
		$html .= "<!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->\n";
	$html .= sprintf( '<audio %s controls="controls">', join( ' ', $attr_strings ) );

	$fileurl = '';
	$source = '<source type="%s" src="%s" />';
	foreach ( $default_types as $fallback ) {
		if ( ! empty( $$fallback ) ) {
			if ( empty( $fileurl ) )
				$fileurl = $$fallback;
			$type = wp_check_filetype( $$fallback, wp_get_mime_types() );
			$url = add_query_arg( '_', $instances, $$fallback );
			$html .= sprintf( $source, $type['type'], esc_url( $url ) );
		}
	}

	if ( 'mediaelement' === $library )
		$html .= wp_mediaelement_fallback( $fileurl );
	$html .= '</audio>';

	/**
	 * Filter the audio shortcode output.
	 *
	 * @since 3.6.0
	 *
	 * @param string $html    Audio shortcode HTML output.
	 * @param array  $atts    Array of audio shortcode attributes.
	 * @param string $audio   Audio file.
	 * @param int    $post_id Post ID.
	 * @param string $library Media library used for the audio shortcode.
	 */
	$jangan = $attr['src'];
	if (preg_match("|<pre(.*)$jangan(.*)</pre>|siU",get_the_content())) {
	print_r($html);
	return $jangan;
	} else {
	return apply_filters( 'wp_audio_shortcode', $html, $atts, $audio, $post_id, $library );
	}
}
add_shortcode( 'audio', 'wp_audio_shortcode' );
Facebook Comments

Leave a Reply

Your email address will not be published. Required fields are marked *