新手写了一段代码,自己都能感觉到太稚嫩而且逻辑有点乱,所以来求大佬给指点一下,帮助我开拓一下思维,)
为了实现啥:
代码是为了实现从数据库中读取文章的发布日期,比如如下的文章发布日期:
2018 年 1 月 5 日,2018 年 1 月 7 日,2018 年 2 月 8 日,2019 年 3 月 5 日,2019 年 3 月 8 日
然后根据这些日期的月份生成一些链接,分别链接到这个月份的文章汇总页面,比如如下的月份汇总:
2018 年 1 月,2018 年 2 月,2019 年 3 月--按日期先后排序
我的实现步骤:
一、我首先从 MYSQL 中获取这些文章发布日期的数组,是 UNIX 日期戳格式的
array(5) { [0]=> string(10) "1528416000" [1]=> string(10) "1524441600" [2]=> string(10) "1532044800" [3]=> string(10) "1524700800" [4]=> string(10) "1558224000"} 二、转化成了可读的日期格式数组(只保留年份和月份)
array(5) { [0]=> string(6) "201801" [1]=> string(6) "201801" [2]=> string(6) "201802" [3]=> string(6) "201903" [4]=> string(6) "201903"} 三、判断上面数组中有哪些日期,然后生成“按月份归档的文章”链接。
我的代码:
get_col( $wpdb->prepare("SELECT meta_value FROM wp_postmeta WHERE meta_key = %s AND meta_value !=''" 'post_date')); //第一步,获取到文章的发表日期 array ( wordpress ) if(!empty($datecheck)){$humandate = array_map(function($item){return date("Ym", $item);},$datecheck);} //第二步,转化成可读的日期数组 $year = date('Y'); // 我本意是获取数据库里存在的文章年份(比如上面数组中存在的 2018 年、2019 年),可是不知如何实现,就暂时用这个来表示 2018 年,这样就导致最后只能处理 2018 年,不能处理 2019 年的文章归档,求大佬帮忙解惑,谢谢。 $mOnth= 1; //从第一个月开始循环输出链接 while($month<=12){ if ($month >=10){ $cdate = $year.$month; }else{$cdate = $year.'0'.$month; } //为了和数组内的日期格式相同,所以年份和月份组合起来,两种情况,一种是 2018+10 = 201810,另一种是 2018+0+1 = 201801,不要笑我呆,菜鸟只能想到这样来处理了。 if (in_array($cdate, $humandate)){ echo ''.$year.'年'.$month.'月'; } //数组中存在这个日期的,就写出链接。 $month++; } ?> 