给 WordPress 添加 Aside 功能
很早的时候,常常为了要发布一些简单的消息而不得不挤半天牙膏皮,以免一篇日志里就一两句话而显得“很掉面子”。后来饭否等“微型博客”的流行给了 自己以启迪,有同样想法的人也有不少,甚至有些人已经将这类“微型博客”整合进原有博客中了。以前自己也稍稍研究了下,找到了模拟“微型博 客”并整合进来的可行性方案,在这里共享一下。
分几步修改,首先建立一个新的分类,记住其 ID,为了后文叙述方便,这里假设 ID 为 1,接下来的修改内容是打开主题中的 index.php 文件,找到类似 <?php while (have_posts()) : the_post(); ?> 的代码,从下一行插入
<?php if ( the_category_ID(false) == 1 ){ ?>
<div class=”aside”><p><?php echo get_the_content(); ?> <?php comments_popup_link(‘(0)’, ‘(1)’, ‘(%)’); ?> <a href=”<?php the_permalink() ?>” rel=”bookmark”>#</a> <?php edit_post_link(‘e’, ”, ”); ?></p></div>
<?php }else{ ?>
并找到 endwhile; 修改成 } endwhile; 。经过这样修改,以后往 ID 为 1 的分类里写的日志在首页都将单独用 <div class=”aside”></div> 包含通过 CSS 调节区分下就可以得到效果了。
接下来的修改可以视自己的要求修改:
如果要单篇日志页也额外处理,可以仿照 index.php 的修改方法作修改 single.php。如果需要从分类列表中排除这个专用分类则可以在分类列表调用函数 wp_list_cats() 中加入参数 exclude=1。如果需要从最新日志列表中去除则需要在主题的 functions.php (如果没有则建立)文件中的 <?php 之下插入:
function Archives_Join($r){
global $wpdb;$r .= “LEFT JOIN $wpdb->term_relationships ON $wpdb->posts.ID = $wpdb->term_relationships.object_id LEFT JOIN $wpdb->term_taxonomy ON $wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id LEFT OUTER JOIN $wpdb->terms ON $wpdb->term_taxonomy.term_id = $wpdb->terms.term_id”;
return $r;
}function Archives_Where($r){
global $wpdb;$r .= ” AND $wpdb->terms.term_id != 1 AND $wpdb->term_taxonomy.taxonomy = ‘category'”;
return $r;
}add_filter(‘getarchives_join’, ‘Archives_Join’);
add_filter(‘getarchives_where’, ‘Archives_Where’);
注意上述代码中 the_category_ID(false) == 1 以及 $wpdb->terms.term_id != 1 里的 1 需要修改成之前你建立的分类 ID。OK了,大功告成。以后有时间再研究独立数据表的 Aside 了。