這篇文章是從Jinwen Say那邊看來的,他是一個功力高深的wordpress blogger,提供了許多wordpress模板,還有jQuery的應用,有興趣的朋友也可以過去他那邊挖寶喔:) 

文章裡頭提到wordpress本身可以支援五種文章延伸的代碼,包含最新文章,最新迴響,熱門文章,相關文章以及隨機文章。通常這五種功能我們都會使用插件,但是裝太多插件對於blog的讀取速度也會降低,所以插件能省則省。

如果你也是標榜走無插件風格的朋友,那麼試試以下wordpress內建的代碼,也許會是你想要的效果。

最新文章:(直接在想要呈現的位置放上以下代碼即可)


$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>
< /ul>
< ?php endif; endwhile; ?>

但是我個人認為最新文章到不用那麼麻煩,一直以來我都是使用archives的調用函數呈現: 。只要簡單一句話,跟上面代碼的效果是相同的(請看圖)


最新迴響:(直接在想要呈現的位置放上以下代碼即可)


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
  • ". "ID)."#comment-" . $comment->comment_ID . "" title="on ".$comment->post_title . "">".strip_tags($comment->comment_author)."" .": " .strip_tags($comment->com_excerpt)."
  • ";
    }
    $output .= $post_HTML;
    echo $output;
    ?>

    如果你貼了以上代碼出現錯誤 Parse error: syntax error, unexpected '=' ,也許你可以嘗試改用以下我修改過的代碼:
    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
  • ". "ID)."#comment-" . $comment->comment_ID . "" title="on ".$comment->post_title . "">".strip_tags($comment->comment_author)."" .": " .strip_tags($comment->com_excerpt)."
  • ";
    }
    $output .= $post_HTML;
    echo $output;
    ?>

    出錯的程式碼在於「判斷是否要顯示密碼文章的迴響」,我所做的修改是將此段code作修正,而預設密碼文章的迴響不會顯示在迴響欄。假使你希望密碼文章的迴響也會顯示,就將「AND comment_type = post_password 」給移除即可。以下是效果預覽圖:


    熱門文章:(直接在想要呈現的位置放上以下代碼即可)



      < ?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>
      < ?php echo $title ?>
      ()
      < ?php } } ?>
      < /ul>

    以下是效果預覽圖:


    相關文章:(根據文章中的tag自動判斷相關性,直接在想要呈現的位置放上以下代碼即可)



      < ?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>
      < ?php
      endwhile;
      }
      }
      ?>
      < /ul>

    預覽效果跟熱門文章的樣式相同,都是文章在前,後頭自帶迴響數,所以這邊就不放圖片了。

    隨機文章:(直接在想要呈現的位置放上以下代碼即可)


    query_posts(array('orderby' => 'rand', 'showposts' => 1));
    if (have_posts()) :
    while (have_posts()) : the_post();
    the_title();
    the_excerpt();
    endwhile;
    endif; ?>

    如果你使用以上代碼,顯示的效果會變成含帶標題以及文章摘要(如圖):



    或者你可以使用我修改過的代碼:
    query_posts(array('orderby' => 'rand', 'showposts' => 2));
    if (have_posts()) :
    while (have_posts()) : the_post();?>
    < a href="" rel="bookmark" title="Permanent Link to "> 

    < ?php endwhile;endif; ?>

    預覽圖如下:



    我修改的部份包含標題可以連結,以及後頭自帶迴響數目。至於要顯示多少篇隨機文章,修改部份在「'showposts' => X」的地方,將「X」改成想要的數目即可。

    以上就是五種不用插件直接實現的文章功能,喜歡的朋友歡迎拿去用:)。插件雖然可以提供大家便利的修改功能,但是會拖一點速度。假設你自己會使用Wordpress提供的代碼修改成你想要的功能,所得到的成就感是不是也會更高呢^^:cool:


    Tags: | 引用(0)