可以控制WordPress音频播放器的宽度吗?

时间:2014-05-03 作者:lacer

是否可以控制Wordpress 3.9音频播放器的宽度?我喜欢播放器控件的简单性,并希望在一个表格中包含它的窄宽度版本,该表格列出了专辑中的所有歌曲。比如:

[audio mp3="myfile.mp3" width="120px"][/audio]
此外,是否有参考资料解释音频播放器的样式(颜色等)?

提前感谢您的帮助!

1 个回复
SO网友:birgire

音频播放器子集的包装器:

如果要将包装器添加到某些本机音频播放器,但不是所有本机音频播放器,可以使用以下方法。如果要添加如下所示的包装:

Modifed audio player

然后,您可以在音频短代码中使用以下额外属性:

[audio wrapper="on" 
       wrapper_class="audio-mini" 
       wrapper_style="width:182px; border: 1px solid black; padding: 10px; 
                      background-color: #888;" 
       wrapper_width="182"
       wrapper_tag="div"  
       mp3="http://example.com/mozart.mp3" ]
要添加具有给定类的包装,请使用样式标记和宽度。

请注意,如果将播放器缩小到120px, 您需要使用CSS隐藏音量按钮和音量滑块:

.mejs-volume-button, .mejs-horizontal-volume-slider { display: none; }
为了避免影响所有音频播放器,可以使用自定义包装类来针对小型播放器:

.audio-mini .mejs-volume-button, 
.audio-mini .mejs-horizontal-volume-slider { display: none; }
要激活包装器,请使用wrapper 具有以下值的属性on, yes, true1.

借助以下插件,可以实现上述方法:

/**
 * Plugin Name: Wrapper for Audio Player shortcode
 * Plugin URI:  https://wordpress.stackexchange.com/a/143281/26350
 * Author:      birgire
 */

add_action( \'init\', function(){
    $mini = new WPSE_Audio_Player_Wrapper;
    $mini->init();
});


class WPSE_Audio_Player_Wrapper
{
    protected $wrapper          = FALSE;
    protected $tag              = \'div\';
    protected $allowed_tags     = array( \'div\', \'p\' );
    protected $width            = \'\';
    protected $class            = \'\';
    protected $style            = \'\';

    public function init()
    {
        add_filter( \'wp_audio_shortcode_override\' , 
                    array( $this, \'wp_audio_shortcode_override\' ), 10, 2 );
    }

    public function wp_audio_shortcode_override( $html, $attr )
    {
        if( isset( $attr[\'wrapper\'] ) )
            $this->wrapper = filter_var( $attr[\'wrapper\'], FILTER_VALIDATE_BOOLEAN );

        if( isset( $attr[\'wrapper_width\'] ) )
            $this->width = $attr[\'wrapper_width\'];

        if( isset( $attr[\'wrapper_class\'] ) )
            $this->class = $attr[\'wrapper_class\'];

        if( isset( $attr[\'wrapper_style\'] ) )
            $this->style = $attr[\'wrapper_style\'];

        if( isset( $attr[\'wrapper_tag\'] ) 
            && in_array( $attr[\'wrapper_tag\'], $this->allowed_tags, TRUE ) 
        )
            $this->tag = $attr[\'wrapper_tag\'];

        add_filter( \'wp_audio_shortcode\', 
                        array( $this, \'wp_audio_shortcode\' ) );

        return $html;
    }

    function wp_audio_shortcode( $html )
    {   
        if( $this->wrapper )
        {
            $s = \'\';

            if( \'\' !== $this->class )
                $s .= sprintf( \' class="%s"\', esc_attr( $this->class ) );

            if( \'\' !== $this->style )
                $s .= sprintf( \' style="%s"\', esc_attr( $this->style ) );

            if( \'\' !== $this->width )
                $s .= sprintf( \' width="%s"\', esc_attr( $this->width ) );

            $html = sprintf( \'<%s%s>%s</%s>\', $this->tag, $s, $html, $this->tag );
        }

        return $html;
    }   
}
将插件代码保存到文件中/wp-content/plugins/wrapped-audio-player/wrapped-audio-player.php 并激活它。

上一个答案:

音频播放器的默认样式为width:100% 因此,您可以始终在内容编辑器中的短代码周围添加div包装:

<div style="width:120px;">
    [audio mp3="myfile.mp3]
</div>
您似乎无法用以下内容覆盖默认样式:

    [audio mp3="myfile.mp3 style="width:120px;"]
因为style 音频标签的属性是硬编码的。我不确定这是故意的还是一个bug。

支持的短代码属性包括src, loop, autoplaypreload.

这里有一些其他想法,您可以尝试将宽度更改为120px:

120px audio player

它们没有经过很好的测试,但希望您可以进一步使用它,并根据您的需要进行调整:

Idea 1:

您可以通过制作自己的短码来绕过它,该短码将上述div包装在音频短码周围。

Idea 2:

使用wp_audio_shortcode 更换过滤器:

/**
 * Change the width of the audio player from 100% to 120px via replace
 *
 */
function wpse_143272_wp_audio_shortcode_a( $html )
{
    return str_ireplace( \'width: 100%\', \'width: 120px\', $html );
}

add_filter( \'wp_audio_shortcode\', \'wpse_143272_wp_audio_shortcode_a\' );

Idea 3:

包裹adivwp_audio_shortcode 过滤器:

/**
 * Change the width of the audio player from 100% to 120px with a div wrapper
 *
 */
function wpse_143272_wp_audio_shortcode_b( $html )
{
    return sprintf( \'<div style="width: 120px">%s</div>\', $html );
}

add_filter( \'wp_audio_shortcode\', \'wpse_143272_wp_audio_shortcode_b\' );

Idea 4:

使用CSS进行调整:

/**
 * Change the width of the audio player from 100% to 120px with CSS
 *
 */

function wpse_143272_wp_head()
{
    echo \'<style>.wp-audio-shortcode { width: 120px !important; }</style>\';
}

add_action( \'wp_head\', \'wpse_143272_wp_head\' ),
或者直接将其添加到样式表中;-)

Playlist:

要显示所有歌曲的列表,请使用[playlist] 改为使用快捷码,但您必须将音频文件上载到WordPress媒体库。如果要在播放列表中使用外部音频文件,可以尝试this solution.

结束

相关推荐

Error Using Audio plugin

我已经安装了音频插件,以创建Xbrowser播放列表,但出现以下错误jPlayer 2.0.0 : id=\'jquery_jplayer_1\' : Error!到目前为止,我所做的只是创建一个新帖子,使用wordpress音频上传器将音频上传到帖子,使用以下短代码将播放列表添加到帖子,然后发布。[audio layout=\"list\"] 也尝试过[audio]但产生了同样的错误这些文件是。mp3格式,可以在其他播放器中播放。如果相关,该站点存储在本地。