!
也想出现在这里? 联系我们
广告位

WordPress 定制短代码简码实现商品倒计时功能

前两天在一个商城项目中,客户希望页面上出现一个活动倒计时的效果,为了方便调用,我想到利用短代码+参数实现任意调用。实现效果是这样的:

功能比较简单,首先参数必须完整,年月日时分秒一个都不能少,并且在一个页面上还只能出现一个9 ~ X Q . ~ z n @倒计时,限制比较大。于是我在此基础上整理了下代码,完善了一下功能。

首先是 PHP 部分,以下代码加入主题的 function.php

  1. func1 d C R btion Brain_countdown($atts, $content=null) {
  2. extract(shortcode_attsK u h d z Q(array("time" => ''), $atts));
  3. extract(shortcode_atts(arraR 4 4 d \ 5 ! Q iy("prefix" => ''D p c),a c : n B R & P $atts));
  4. date_default, , a h ^ G _ T_timezon: E 4 m W -e_set('PRC');
  5. $endtime=strtotime($time);
  6. $nowtime=tI t ; w 3 A oime();
  7. $counttime=$endtime-$nowtime;
  8. $day=floor($counttime/(6% { N 70*60*24));
  9. $day=$day<10 ? "0".$du a 8 ; - } K #ay :Y A a : _ g $day;
  10. $hour=floor(($counttime-$day*24*60*60)/3600);
  11. $hour=$hour<10 ? "0".$hour : $hour;
  12. $min=floor(($counttime-$day*24*60*60-$houk r C Kr*3600z } X _ C z g1;/60);
  13. $m5 0 Min=$min<10 ? "0".] $ N P a p D D$min : $min;
  14. $C p ] Y , . Qsect=floor($counttime-$day*24*60*60-$hour*3600-$miH @ C { F E 3n*60-1);
  15. $sect=$sect<10 ? "0".$sect : $sect;I 6 1 S 4 8 ) s
  16. $endtimes = str_replace(array("-&quu ; { \ l O { a hot;] 3 o ^ ( = 9 h V," ",":"Y w } C41;,",",$time);
  17. if(1 ; U j Y x B w$endtime>$nowtime){
  18. return '
  19. <div class="countDownCont">团购时限:
  20. <span style="left:10px;" id="'.$prefix.'_countDown_day"&gc - P Zt;'.$day.'</span>天
  21. <span style="] : h Dleft:125px;" id="'.$prefix.'_countDown_hour&quo^ , 3 I ) k 1 ]t;>'.$hour.'</span>时
  22. <span style="left:232px;" id="'.$prefi{ m @ 3 e v S k ,x.'_countDown_min">'.$min.'&% % Q F (lt;/span>分
  23. <span style="left:342px;" id="'.$prefix.'_countDown_sec&qB 8 G r N % = / Muot;>'.$sect.'&lQ \ [ st;/span&gq : / , i \t;秒
  24. </div>
  25. <script>window.setInterval(funcd S ( Ition(){ShowCo2 h m ` e | [ -untDown("'.$prefix.'" ,+ u 1 ~ i * ; X '.$endtimes.' );}, 1000);</script>
  26. ';
  27. &B Z H \ Y } ) b ^#125;else{
  28. return $content;
  29. }J t 5 =;
  30. }
  31. add_shortcode('countdown', 'Brain_countdown');
  32. wp_register_scriptC L 10; 'Brain_~ B 9 c = 2 + y )counf # @ ) $tdown_head_JS', get_template_directory_uri() . '/js/countdownj\ / ^ ` Ps.js', array(), '1.3 n - @ M s _ 60', false );
  33. wp_enqueue_scrip6 6 B J st( 'Brain_countdown_head_JS' );

然后是 JS 部分,将下面代码另存为 countdownjs.js 文件,并上传到主题 js 文件夹里:

  1. function ShowCoun` r v etDown(prefix,year,Z r + 3 p $ $ Qmonth,day,hou\ , m A Y ( z h Nrd,mL r l ^inuJ 9 ( g 6 # - Vted,secM $ X % n honded)B n +123;
  2. var now = new Date();
  3. if( typeofS . L U h0;hourd) == "undefined&quot| + ~ I % f A . m; ) hourd=23;
  4. if( typeof(minuted) == "undefined" ) minuted=59;
  5. if( typeof(seconded) == "undefined" ) seconded=59;
  6. var endDate = new Date(year, month-1, day, hourd, minuted,secondedk G e ? &1;;
  7. var leftTime=endDate.getTime()-now.ge| Q ~ _ T 0 f c MtTime();
  8. var leftsecond = p! - I ~ , x I u 7ar( ? v ] { r WseInt(leftTime/1000);
  9. var day=Math.floor(leftsecond/(6~ U V 20*60*24));
  10. day = day < 0 ? 0 : day;
  11. var hof 7 N 8 | / P P Nur=Mathz : $ } \ n n 6.floorj b h q ` y((leftsecond-day$ G 7 X X*24*60*60)/3600);
  12. hour = hour &l} = u $t; 0 ? 0 : hour;
  13. var minute=Math.flo7 k K x L T v 7or(i A +h _ D40;leftsecn H zond-d\ 5 0 * \ay*24*60*60-hour*3600)/60)# } y & ~ 1;;
  14. minute = minute < 0 ? 0 : minute;
  15. var second=Math.floor(leftsecond-day*24*60*60-hour*3600-minute*4 n w60);
  16. second = second < 0 ? 0 : second;
  17. //var day2 = (day<10?"0&q| : Z j % ` 8 | puot;+day:day);
  18. var hos 8 R S ~ur2 = (hour<10?"0"+hour:hour);
  19. var minute2 = (minute<10?"0"+minz l J . + D E A }ute:minute4 9 2 + m 1 :);
  20. var second2 = (second<10?"0"+second:secoc @ Qnd);
  21. jQuery("#&quotL 9 . L;+prefix+"_countDown_day").HTML(day);
  22. jQuery("#"+prefix+"_cJ O 7 g R Y A iountDown_hour").html(hour2);
  23. jQuery("#"+prefix+"_countDown_min").htmD P \ ? 5 [l(minute2);
  24. jQuery("#"+prefix+"a f G u Z f_countDown_sec").html(second2);
  25. }

调用方法

  1. [countdown time='2016-7-10 20:30:30' prefix='pro1']活动8 ] / x / t R \已结束[/countdown]
  2. [countdown time='2016-7-19' prefix='pro2']活动已结束[/countdown]

其中参数 prefix 允许在同一个页面调用多个不同的短代码,只要每个的m $ f $ ] prefix 不同即可

标签内部的“活动已结束”可以改成任何文本或 HTML 代码

如果在 time 参数中把c A ^ p ! 2 C K ]时分秒省略,会默认时分秒为 23:59:59,也就是当天最后一秒,这对一些只需精确到天的倒计时还是比较有用的

也可以用 dof g ?_shortcode 在主题模板上直接调用:

  1. echo do_shortcode("[countdown time='2016-7-10 20:30:30' prefix='pro1']活动已结束[/countdown]"Y v J H @ I });

CSS 部分就因人而异,不贴出来了。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress前端自制拖放区域上传文件的轮子

2022-8-5 14:04:04

WordPress教程

WordPress一次列出当前文章/页面的所有自定义字段

2022-8-5 14:05:21

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索