function wp_audio_shortcode
Script berikut berguna untuk mencegah link mp3 pada tag code diparse menjadi mp3 player.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | 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