安装了 Justin Blanton 开发的 smart archives 插件, 发现这个插件对中文和韩文支持不佳。我给做了点小修改,并且对他的一些小缺陷也进行了补正。最后的效果请看 http://www.doyj.com/archives/。
安装方法如下:
- 将下面的代码拷贝并存成文件smartarchives.php
- 将smartarchives.php 上载到你的plugin目录
- 到控制面板激活Smart Archives 插件
- 在适当的地方插入smartArchives()函数调用。
这个函数有两个参数,第一个在”both”, “block”,”list”中选择,默认为both 第二个是要排除的分类id.
下面就是修改后的代码:
‘.$years[year].’: ‘);
$qm = mysql_query(“SELECT distinct month(post_date) as monthv
FROM $tableposts
ORDER BY monthv asc”) or die(mysql_error());
for ($i=1; $i<=12; $i++)
{
$q = mysql_query("SELECT *, year(post_date) as year
FROM $tableposts
WHERE year(post_date)='$years[year]'
AND month(post_date)='$i'
AND post_status='publish'
AND post_date <= NOW()
ORDER BY id desc") or die(mysql_error());
$sm = $month[zeroise($i,2)]; // get the shortened month name; strtotime() localizes
if(mysql_num_rows($q))
{ echo('‘.$sm.’ ‘); }
else
{ echo(‘‘.$sm.’ ‘); }
}
echo(‘
‘);
}
echo (‘
‘);
}
if (($format == ‘both’) || ($format == ‘list’)) { //check to see if we are supposed to display the list
$qy = mysql_query(“SELECT distinct year(post_date) as year, post_status
FROM $tableposts
WHERE post_status=’publish’
AND post_date <= NOW()
ORDER BY year desc");
// loop to display links to all posts, sorted by descending month and day
while($years = mysql_fetch_array($qy)) {
$qm = mysql_query("SELECT distinct month(post_date) as monthv FROM $tableposts ORDER BY monthv desc") or die(mysql_error());
while($date = mysql_fetch_array($qm)) {
$q = mysql_query("SELECT *, year(post_date) as year, month(post_date) as monthv
FROM $tableposts WHERE year(post_date)='$years[year]'
AND month(post_date)='$date[monthv]'
AND post_status='publish'
AND post_date <= NOW()
ORDER BY id desc") or die(mysql_error());
if(mysql_num_rows($q)) {
$lm = $month[zeroise($date[monthv],2)]; // get the full month name; strtotime() localizes
echo('
‘.$lm.’ ‘.$years[year].’
‘);
echo(‘
- ‘);
- ‘.$post[post_title].’
- ‘.$post[post_title].’
$q = mysql_query(“SELECT *, year(post_date) as year, month(post_date) as monthv
FROM $tableposts WHERE year(post_date)=’$years[year]’
AND month(post_date)=’$date[monthv]’
AND post_status=’publish’
ORDER BY post_date desc”) or die(mysql_error());
while($post = mysql_fetch_array($q)) {
if ($post[post_date_gmt] <= $now) { if ($catID != '') { // check to see if a category id was specified in the arguments // get the categories that are attached to the current post $cats = $wpdb->get_col(“SELECT category_id FROM $wpdb->post2cat WHERE post_id = $post[ID]”);
$found=false;
foreach ($cats as $cat) { // look to see if the specified category is attached to the current post
if ($cat == $catID) $found=true;
}
if (!$found) echo(‘
‘);
}
else echo(‘
‘);
}
}
echo (‘
‘);
}
}
}
}
}
?>