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

Leave a Reply

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