這篇文章是從Jinwen Say那邊看來的,他是一個功力高深的wordpress blogger,提供了許多wordpress模板,還有jQuery的應用,有興趣的朋友也可以過去他那邊挖寶喔:)
文章裡頭提到wordpress本身可以支援五種文章延伸的代碼,包含最新文章,最新迴響,熱門文章,相關文章以及隨機文章。通常這五種功能我們都會使用插件,但是裝太多插件對於blog的讀取速度也會降低,所以插件能省則省。
如果你也是標榜走無插件風格的朋友,那麼試試以下wordpress內建的代碼,也許會是你想要的效果。
最新文章:(直接在想要呈現的位置放上以下代碼即可)
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('showposts=' . $limit=7 . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;
?>
<?php while(have_posts()) : the_post(); if(!($first_post == $post->ID)) : ?>
<ul>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
</ul>
<?php endif; endwhile; ?>
但是我個人認為最新文章到不用那麼麻煩,一直以來我都是使用archives的調用函數呈現:<?php get_archives("postbypost", "6", "html", " ", " "); ?> 。只要簡單一句話,跟上面代碼的效果是相同的(請看圖)

最新迴響:(直接在想要呈現的位置放上以下代碼即可)
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = " AND post_password = " ORDER BY comment_date_gmt DESC LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
foreach ($comments as $comment) {
$output .= "n<li>". "<a href="" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "" title="on ".$comment->post_title . "">".strip_tags($comment->comment_author)."</a>" .": " .strip_tags($comment->com_excerpt)."</li>";
}
$output .= $post_HTML;
echo $output;
?>
如果你貼了以上代碼出現錯誤 Parse error: syntax error, unexpected '=' ,也許你可以嘗試改用以下我修改過的代碼:
<?php
global $wpdb;
$sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url, SUBSTRING(comment_content,1,30) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID)WHERE comment_approved = '1'
AND comment_type = post_password ORDER BY comment_date_gmt DESC LIMIT 10";
$comments = $wpdb->get_results($sql);
$output = $pre_HTML;
foreach ($comments as $comment) {
$output .= "n<li>". "<a href="" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "" title="on ".$comment->post_title . "">".strip_tags($comment->comment_author)."</a>" .": " .strip_tags($comment->com_excerpt)."</li>";
}
$output .= $post_HTML;
echo $output;
?>
出錯的程式碼在於「判斷是否要顯示密碼文章的迴響」,我所做的修改是將此段code作修正,而預設密碼文章的迴響不會顯示在迴響欄。假使你希望密碼文章的迴響也會顯示,就將「AND comment_type = post_password 」給移除即可。以下是效果預覽圖:

熱門文章:(直接在想要呈現的位置放上以下代碼即可)
<ul>
<?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10");
foreach ($result as $post) {
setup_postdata($post);
$postid = $post->ID;
$title = $post->post_title;
$commentcount = $post->comment_count;
if ($commentcount != 0) { ?>
<li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
<?php echo $title ?></a> (<?php echo $commentcount ?>)</li>
<?php } } ?>
</ul>
以下是效果預覽圖:

相關文章:(根據文章中的tag自動判斷相關性,直接在想要呈現的位置放上以下代碼即可)
<ul>
<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>10,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?> <?php comments_number(' ','(1)','(%)'); ?></a> </li>
<?php
endwhile;
}
}
?>
</ul>
預覽效果跟熱門文章的樣式相同,都是文章在前,後頭自帶迴響數,所以這邊就不放圖片了。
隨機文章:(直接在想要呈現的位置放上以下代碼即可)
<?php
query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post();
the_title();
the_excerpt();
endwhile;
endif; ?>
如果你使用以上代碼,顯示的效果會變成含帶標題以及文章摘要(如圖):

或者你可以使用我修改過的代碼:
<?php
query_posts(array('orderby' => 'rand', 'showposts' => 2));
if (have_posts()) :
while (have_posts()) : the_post();?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a> <?php comments_number('', '(1)', '(%)'); ?><br />
<?php endwhile;endif; ?>
預覽圖如下:

我修改的部份包含標題可以連結,以及後頭自帶迴響數目。至於要顯示多少篇隨機文章,修改部份在「'showposts' => X」的地方,將「X」改成想要的數目即可。
以上就是五種不用插件直接實現的文章功能,喜歡的朋友歡迎拿去用:)。插件雖然可以提供大家便利的修改功能,但是會拖一點速度。假設你自己會使用WordPress提供的代碼修改成你想要的功能,所得到的成就感是不是也會更高呢^^



EVERYBODYs COMMENT:
LEAVE YOUR COMMENT: