立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 1107|回复: 0

[Wordpress 通用教程] WordPress中定制短代码,实现倒计时功能的方法

[复制链接]
发表于 2023-12-1 22:11:45 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
很多朋友希望页面上出现一个活动倒计时的效果,为了方便调用,可以利用短代码+参数实现任意调用。实现效果是这样的:

080808.png
偷懒百度了一下,发现已有人实现出来,参考这个文档。WordPress添加文章倒计时短代码的步骤
但他做的功能比较简单,首先参数必须完整,年月日时分秒一个都不能少,并且在一个页面上还只能出现一个倒计时,限制比较大。于是我在此基础上整理了下代码,完善了一下功能。
首先是PHP部分,以下代码加入主题的function.php
  1. function Brain_countdown($atts, $content=null) {
  2.         extract(shortcode_atts(array("time" => ''), $atts));
  3.         extract(shortcode_atts(array("prefix" => ''), $atts));
  4.         date_default_timezone_set('PRC');
  5.         $endtime=strtotime($time);
  6.         $nowtime=time();
  7.         $counttime=$endtime-$nowtime;
  8.         $day=floor($counttime/(60*60*24));
  9.         $day=$day<10 ? "0".$day : $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-$hour*3600)/60);
  13.         $min=$min<10 ? "0".$min : $min;
  14.         $sect=floor($counttime-$day*24*60*60-$hour*3600-$min*60-1);
  15.         $sect=$sect<10 ? "0".$sect : $sect;
  16.         $endtimes = str_replace(array("-"," ",":"),",",$time);
  17.         if($endtime>$nowtime){
  18.                 return '
  19.                 <div class="countDownCont">团购时限:
  20.                 <span style="left:10px;" id="'.$prefix.'_countDown_day">'.$day.'</span>天
  21.                 <span style="left:125px;" id="'.$prefix.'_countDown_hour">'.$hour.'</span>时
  22.                 <span style="left:232px;" id="'.$prefix.'_countDown_min">'.$min.'</span>分
  23.                 <span style="left:342px;" id="'.$prefix.'_countDown_sec">'.$sect.'</span>秒
  24.                 </div>

  25.                 <script>window.setInterval(function(){ShowCountDown("'.$prefix.'" , '.$endtimes.' );}, 1000);</script>
  26.                 ';
  27.         }else{
  28.                 return $content;
  29.         }
  30. }

  31. add_shortcode('countdown', 'Brain_countdown');
  32. wp_register_script( 'Brain_countdown_head_JS', get_template_directory_uri() . '/js/countdownjs.js', array(), '1.0', false );
  33. wp_enqueue_script( 'Brain_countdown_head_JS' );
复制代码
然后是JS部分,将下面代码另存为countdownjs.js文件,并上传到主题js文件夹里:
  1. function ShowCountDown(prefix,year,month,day,hourd,minuted,seconded){
  2.         var now = new Date();
  3.         if( typeof(hourd) == "undefined" ) 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,seconded);
  7.         var leftTime=endDate.getTime()-now.getTime();
  8.         var leftsecond = parseInt(leftTime/1000);
  9.         var day=Math.floor(leftsecond/(60*60*24));
  10.         day = day < 0 ? 0 : day;
  11.         var hour=Math.floor((leftsecond-day*24*60*60)/3600);
  12.         hour = hour < 0 ? 0 : hour;
  13.         var minute=Math.floor((leftsecond-day*24*60*60-hour*3600)/60);
  14.         minute = minute < 0 ? 0 : minute;
  15.         var second=Math.floor(leftsecond-day*24*60*60-hour*3600-minute*60);
  16.         second = second < 0 ? 0 : second;
  17.         //var day2 = (day<10?"0"+day:day);
  18.         var hour2 = (hour<10?"0"+hour:hour);
  19.         var minute2 = (minute<10?"0"+minute:minute);
  20.         var second2 = (second<10?"0"+second:second);

  21.         jQuery("#"+prefix+"_countDown_day").html(day);
  22.         jQuery("#"+prefix+"_countDown_hour").html(hour2);
  23.         jQuery("#"+prefix+"_countDown_min").html(minute2);
  24.         jQuery("#"+prefix+"_countDown_sec").html(second2);

  25. }
复制代码
调用:
短代码
  1. [countdown time='2016-7-10 20:30:30' prefix='pro1']活动已结束[/countdown]
  2. [countdown time='2016-7-19' prefix='pro2']活动已结束[/countdown]
  3. ...
复制代码
其中参数prefix允许在同一个页面调用多个不同的短代码,只要每个的prefix不同即可
标签内部的“活动已结束”可以改成任何文本或HTML代码
如果在time参数中把时分秒省略,会默认时分秒为23:59:59,也就是当天最后一秒,这对一些只需精确到天的倒计时还是比较有用的
也可以用do_shortcode在主题模板上直接调用:
  1. echo do_shortcode("[countdown time='2016-7-10 20:30:30' prefix='pro1']活动已结束[/countdown]");
复制代码
CSS部分就因人而异,不贴出来了。

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程 ( 皖ICP备15000319号-1 )

GMT+8, 2024-12-23 15:35

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表