Smart Archives 增强

安装了 Justin Blanton 开发的 smart archives 插件, 发现这个插件对中文和韩文支持不佳。我给做了点小修改,并且对他的一些小缺陷也进行了补正。最后的效果请看 http://www.doyj.com/archives/

安装方法如下:
  1. 将下面的代码拷贝并存成文件smartarchives.php
  2. 将smartarchives.php 上载到你的plugin目录
  3. 到控制面板激活Smart Archives 插件
  4. 在适当的地方插入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(‘

    ‘);
    $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(‘

  • ‘.$post[post_title].’
  • ‘);
    }
    else echo(‘

  • ‘.$post[post_title].’
  • ‘);
    }
    }
    echo (‘

‘);
}
}
}
}
}
?>