WordPress自定义域和HTML5的简单音乐播放器

一个简洁、多形式(标准、图像、相册、音乐、视频、引用和链接)的wordpress博客主题,致力于四仙秋诗歌集。对于音乐和视频,网易云音乐和优酷视频原本打算使用,但所有沙龙网站都使用HTTPS。网易云音乐和优酷视频不支持HTTPS访问,因此使用本地HTML5音乐和视频播放器。
本文将介绍如何创建WordPress简明HTML5音乐播放器,并通过自定义字段获取音乐地址。

WordPress自定义域和HTML5的简单音乐播放器

HTML5代码

添加到需要显示HTML5音乐播放器的地方

  1. <?php if(get_post_meta($post->ID, "audio", true)) { ?>
    <section class="player">
    <audio preload="auto" controls>
        <source src="<?php $values = get_post_custom_values("audio"); echo $values[0]; ?>">
    </audio>
    </section>
    <?php } ?>
    

     

代码中判断了是否有自定义域audio这个值,如果没有就不输出整段代码。

JS代码

添加到主题的JS文件中

  1. // HTML5播放器
    $(function() {
        $('audio').audioPlayer();
    });
    
    
    (function(e, t, n, r) {
        var i = "ontouchstart" in t,
            s = i ? "touchstart" : "mousedown",
            o = i ? "touchmove" : "mousemove",
            u = i ? "touchend" : "mouseup",
            a = i ? "touchcancel" : "mouseup",
            f = function(e) {
                var t = Math.floor(e / 3600),
                    n = Math.floor(e % 3600 / 60),
                    r = Math.ceil(e % 3600 % 60);
                return (t == 0 ? "" : t > 0 && t.toString().length < 2 ? "0" + t + ":" : t + ":") + (n.toString().length < 2 ? "0" + n : n) + ":" + (r.toString().length < 2 ? "0" + r : r)
            },
            l = function(e) {
                var t = n.createElement("audio");
                return !!(t.canPlayType && t.canPlayType("audio/" + e.split(".").pop().toLowerCase() + ";").replace(/no/, ""))
            };
        e.fn.audioPlayer = function(t) {
            var t = e.extend({
                    classPrefix: "audioplayer",
                    strPlay: "播放",
                    strPause: "暂停",
                    strVolume: "音量"
                }, t),
                n = {},
                r = {
                    playPause: "playpause",
                    playing: "playing",
                    time: "time",
                    timeCurrent: "time-current",
                    timeDuration: "time-duration",
                    bar: "bar",
                    barLoaded: "bar-loaded",
                    barPlayed: "bar-played",
                    volume: "volume",
                    volumeButton: "volume-button",
                    noVolume: "novolume",
                    mute: "mute",
                    mini: "mini"
                };
            for (var u in r) n[u] = t.classPrefix + "-" + r[u];
            this.each(function() {
                if (e(this).prop("tagName").toLowerCase() != "audio") return false;
                var r = e(this),
                    u = r.attr("src"),
                    c = r.get(0).getAttribute("autoplay"),
                    c = c === "" || c === "autoplay" ? true : false,
                    h = r.get(0).getAttribute("loop"),
                    h = h === "" || h === "loop" ? true : false,
                    p = false;
                if (typeof u === "undefined") {
                    r.find("source").each(function() {
                        u = e(this).attr("src");
                        if (typeof u !== "undefined" && l(u)) {
                            p = true;
                            return false
                        }
                    })
                } else if (l(u)) p = true;
                var d = e('<div class="' + t.classPrefix + '">' + (p ? e("<div>").append(r.eq(0).clone()).html() : '<embed src="' + u + '" width="0" height="0" volume="100" autostart="' + c.toString() + '" loop="' + h.toString() + '" />') + '<div class="' + n.playPause + '" title="' + t.strPlay + '"><a href="#" rel="external nofollow"  rel="external nofollow" >' + t.strPlay + "</a></div></div>"),
                    v = p ? d.find("audio") : d.find("embed"),
                    v = v.get(0);
                if (p) {
                    d.find("audio").css({
                        width: 0,
                        height: 0,
                        visibility: "hidden"
                    });
                    d.append('<div class="' + n.time + " " + n.timeCurrent + '"></div><div class="' + n.bar + '"><div class="' + n.barLoaded + '"></div><div class="' + n.barPlayed + '"></div></div><div class="' + n.time + " " + n.timeDuration + '"></div><div class="' + n.volume + '"><div class="' + n.volumeButton + '" title="' + t.strVolume + '"><a href="#" rel="external nofollow"  rel="external nofollow" >' + t.strVolume + '</a></div></div>');
                    var m = d.find("." + n.bar),
                        g = d.find("." + n.barPlayed),
                        y = d.find("." + n.barLoaded),
                        b = d.find("." + n.timeCurrent),
                        w = d.find("." + n.timeDuration),
                        E = d.find("." + n.volumeButton),
                        S = d.find("." + n.volumeAdjust + " > div"),
                        x = 0,
                        T = function(e) {
                            theRealEvent = i ? e.originalEvent.touches[0] : e;
                            v.currentTime = Math.round(v.duration * (theRealEvent.pageX - m.offset().left) / m.width())
                        },
                        N = function(e) {
                            theRealEvent = i ? e.originalEvent.touches[0] : e;
                            v.volume = Math.abs((theRealEvent.pageY - (S.offset().top + S.height())) / S.height())
                        },
                        C = setInterval(function() {
                            y.width(v.buffered.end(0) / v.duration * 100 + "%");
                            if (v.buffered.end(0) >= v.duration) clearInterval(C)
                        }, 100);
                    var k = v.volume,
                        L = v.volume = .111;
                    if (Math.round(v.volume * 1e3) / 1e3 == L) v.volume = k;
                    else d.addClass(n.noVolume);
                    w.html("…");
                    b.text(f(0));
                    v.addEventListener("loadeddata", function() {
                        w.text(f(v.duration));
                        S.find("div").height(v.volume * 100 + "%");
                        x = v.volume
                    });
                    v.addEventListener("timeupdate", function() {
                        b.text(f(v.currentTime));
                        g.width(v.currentTime / v.duration * 100 + "%")
                    });
                    v.addEventListener("volumechange", function() {
                        S.find("div").height(v.volume * 100 + "%");
                        if (v.volume > 0 && d.hasClass(n.mute)) d.removeClass(n.mute);
                        if (v.volume <= 0 && !d.hasClass(n.mute)) d.addClass(n.mute)
                    });
                    v.addEventListener("ended", function() {
                        d.removeClass(n.playing)
                    });
                    m.on(s, function(e) {
                        T(e);
                        m.on(o, function(e) {
                            T(e)
                        })
                    }).on(a, function() {
                        m.unbind(o)
                    });
                    E.on("click", function() {
                        if (d.hasClass(n.mute)) {
                            d.removeClass(n.mute);
                            v.volume = x
                        } else {
                            d.addClass(n.mute);
                            x = v.volume;
                            v.volume = 0
                        }
                        return false
                    });
                    S.on(s, function(e) {
                        N(e);
                        S.on(o, function(e) {
                            N(e)
                        })
                    }).on(a, function() {
                        S.unbind(o)
                    })
                } else d.addClass(n.mini);
                if (c) d.addClass(n.playing);
                d.find("." + n.playPause).on("click", function() {
                    if (d.hasClass(n.playing)) {
                        e(this).attr("title", t.strPlay).find("a").html(t.strPlay);
                        d.removeClass(n.playing);
                        p ? v.pause() : v.Stop()
                    } else {
                        e(this).attr("title", t.strPause).find("a").html(t.strPause);
                        d.addClass(n.playing);
                        p ? v.play() : v.Play()
                    }
                    return false
                });
                r.replaceWith(d)
            });
            return this
        }
    })(jQuery, window, document)
    

     

CSS代码

添加到主题文件的CSS文件中

  1. /***************HTML5音乐播放器***************/
    .player{
        background-color: #fff;
        border-top: 1px #eee solid;
        border-right: 1px #eee solid;
        border-left: 1px #eee solid;
        padding: 20px;
    }
    .player h3{
        margin: 12px 0 0 8px;
    }
    /*播放按钮*/
    .audioplayer {
        height: 54px;
        width: 100%;
        position: relative;
        z-index: 1;
        background-color: #f8f8f8;
    }
    
    
    .audioplayer > div {
        position: absolute;
    }
    
    
    .audioplayer-playpause {
        width: 32px;
        height: 32px;
        border-radius: 100%;
        background-color: #447110;
        text-indent: -9999px;
        cursor: pointer;
        z-index: 2;
        top: 10px;
        left: 20px;
    }
    
    
    .audioplayer-playpause:hover,
    .audioplayer-playpause:focus {
        background-color: #024e48;
    }
    
    
    .audioplayer-playpause a {
        display: block;
        -webkit-transition: none;
        -moz-transition: none;
        -ms-transition: none;
        -o-transition: none;
        transition: none;
    }
    
    
    .audioplayer:not(.audioplayer-playing) .audioplayer-playpause a {
        width: 0;
        height: 0;
        border: 6px solid transparent;
        border-right: none;
        border-left-color: #fff;
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        margin: -6px 0 0 -2px;
        /* 8 4 */
        ;
    }
    
    
    .audioplayer-playing .audioplayer-playpause a {
        width: 9px;
        height: 9px;
        position: absolute;
        top: 50%;
        left: 50%;
        margin: -4px 0 0 -4px;
        /* 6 */
        ;
    }
    
    
    .audioplayer-playing .audioplayer-playpause a:before,
    .audioplayer-playing .audioplayer-playpause a:after {
        width: 40%;
        height: 100%;
        background-color: #fff;
        content: '';
        position: absolute;
        top: 0;
    }
    
    
    .audioplayer-playing .audioplayer-playpause a:before {
        left: 0;
    }
    
    
    .audioplayer-playing .audioplayer-playpause a:after {
        rightright: 0;
    }
    
    
    /*时间*/
    .audioplayer-time {
        width: 46px;
        height: 100%;
        line-height: 54px;
        text-align: center;
        z-index: 2;
        top: 0;
    }
    
    
    .audioplayer-time-current {
        left: 68px;
    }
    
    
    .audioplayer-time-duration {
        rightright: 32px;
    }
    
    
    .audioplayer-novolume .audioplayer-time-duration {
        border-right: 0;
        rightright: 0;
    }
    
    
    /*播放条*/
    .audioplayer-bar {
        height: 8px;
        /* 14 */
        background-color: #e4e4e4;
        cursor: pointer;
        z-index: 1;
        top: 50%;
        rightright: 6.875em;
        /* 110 */
        left: 120px;
        /* 110 */
        margin-top: -4px;
        /* 7 */
        ;
    }
    
    
    .audioplayer-novolume .audioplayer-bar {
        rightright: 4.375em;
    }
    
    
    .audioplayer-bar div {
        width: 0;
        height: 100%;
        position: absolute;
        left: 0;
        top: 0;
    }
    
    
    .audioplayer-bar-loaded {
        background-color: #e4e4e4;
        z-index: 1;
    }
    
    
    .audioplayer-bar-played {
        background: #447110;
        z-index: 2;
    }
    /*音量*/
    .audioplayer-volume {
        width: 36px;
        height: 100%;
        text-align: left;
        text-indent: -9999px;
        cursor: pointer;
        z-index: 2;
        top: 0;
        rightright: 0;
    }
    
    
    .audioplayer-volume:hover,
    .audioplayer-volume:focus {
        background-color: #f8f8f8;
    }
    
    
    .audioplayer-volume-button {
        width: 100%;
        height: 100%;
    }
    
    
    .audioplayer-volume-button a {
        width: 0.313em;
        /* 5 */
        height: 0.375em;
        /* 6 */
        background-color: #447110;
        display: block;
        position: relative;
        z-index: 1;
        top: 50%;
        left: 35%;
        margin-top: -2px;
    }
    
    
    .audioplayer-volume-button a:before,
    .audioplayer-volume-button a:after {
        content: '';
        position: absolute;
    }
    
    
    .audioplayer-volume-button a:before {
        width: 0;
        height: 0;
        border: 0.5em solid transparent;
        /* 8 */
        border-left: none;
        border-right-color: #447110;
        z-index: 2;
        top: 50%;
        rightright: -0.25em;
        margin-top: -0.5em;
        /* 8 */
        ;
    }
    
    
    .audioplayer:not(.audioplayer-mute) .audioplayer-volume-button a:after {
        /* "volume" icon by Nicolas Gallagher, http://nicolasgallagher.com/pure-css-gui-icons */
        width: 0.313em;
        /* 5 */
        height: 0.313em;
        /* 5 */
        border: 0.25em double #447110;
        /* 4 */
        border-width: 0.25em 0.25em 0 0;
        /* 4 */
        left: 0.563em;
        /* 9 */
        top: -0.063em;
        /* 1 */
        -webkit-border-radius: 0 0.938em 0 0;
        /* 15 */
        -moz-border-radius: 0 0.938em 0 0;
        /* 15 */
        border-radius: 0 0.938em 0 0;
        /* 15 */
        -webkit-transform: rotate( 45deg);
        -moz-transform: rotate( 45deg);
        -ms-transform: rotate( 45deg);
        -o-transform: rotate( 45deg);
        transform: rotate( 45deg);
    }
    
    
    /***************HTML5音乐播放器end***************/
    

     

设计了一个简单的HTML5音乐播放器,可以轻松地集成到WordPress主题中。您还可以修改代码以匹配主题的样式。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

免责声明   ⚠️ 1. 本站所有资源来源于网络收集,若资源侵犯了您的合法权益, 请来信通知我们(Email: 1427707223@qq.com),我们会及时删除,给您带来的不便,我们深表歉意! 2. 分享目的仅供大家学习和交流,若使用商业用途,请购买正版授权! 否则产生的一切后果将由下载用户自行承担! 3. 会员不得使用于非法商业用途,不得违反国家法律。否则后果自负! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 6. 因源码具有可复制性,一经购买 ,不得以任何形式退款。 7.更多详情请点击查看

优站网 WordPress教程 WordPress自定义域和HTML5的简单音乐播放器 https://www.zhanceo.com/15240.html

诚乃立身之本、信为道德之基

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

联系官方客服

为您解决烦忧 - 24小时在线 专业服务

WordPress自定义域和HTML5的简单音乐播放器-海报