語法 | WordPress不用插件直接實現五種文章代碼

這篇文章是從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>&nbsp;<?php comments_number('', '(1)', '(%)'); ?><br />
<?php endwhile;endif; ?>

預覽圖如下:

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

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

引用網址:

EVERYBODYs COMMENT:

  • WordPress主题中不使用插件就能实现的五个常用功能 | Jinwen Say
  • Mion
    2
    Mion (LV.57) // 2009.04.16 15:25

    這簡直就是在考php啊 (嘆)

  • 丫西
    3
    丫西 (LV.1) // 2009.04.16 17:23

    這個好實用,不然多裝外掛又多耗資源了!XD!

  • 拆組達人
    4
    拆組達人 (LV.49) // 2009.04.16 17:29

    趕快另存新檔存起來!等我新的站搞定再來試試^^!
    --
    拆組達人 與您分享辦公室的大小事

  • 香腸
    5
    香腸 (LV.46) // 2009.04.16 20:23

    太棒了~可以減少資源,加速網站的進行。
    不過我想問一下,WordPress模組中的最新文章,那個應該和上面的代碼是一樣的吧?

  • 小晶
    6
    小晶 (LV.53) // 2009.04.16 21:05

    這個~~要放在sidebar.php裡面嗎?!

  • muki
    7
    muki (LV.1015) // 2009.04.16 21:18

    @Mion
    呵,順便學習也不錯

    @香腸
    這我不清楚耶,我很少用到wp的模組,對他們也沒研究XD

    @小晶
    是的,把想要的語法copy回去貼在sidebar.php就可以了

  • 藍兒
    8
    藍兒 (LV.109) // 2009.04.16 22:36

    蠻方便的

  • 布袋港
    9
    布袋港 (LV.1) // 2009.04.17 16:42

    很實用的教學喔!趕緊收藏,找個時間再來改,3Q~

  • WordPress主题中不使用插件就能实现的五个常用功能 | 梦醒时分
  • Ronald
    11
    Ronald (LV.1) // 2009.04.20 09:36

    這不錯用喔~~我自己找的templates也是用這種寫法~
    但是你一次整理,不錯喔~~~收藏收藏

  • 小俊
    12
    小俊 (LV.4) // 2009.04.23 23:13

    太好了~ 小木好棒~ :) 趕快學起來~ (筆記...

  • 巴奇
    13
    巴奇 (LV.6) // 2009.04.28 16:36

    這個幫我了大忙~ 感謝您阿XD

  • RVfamily » [轉載]Wordpress不用插件直接實現五種文章代碼
  • hugo5688
    15
    hugo5688 (LV.2) // 2009.05.12 11:13

    您好,可以請教一下如何在「熱門文章」前加上每篇的發表日期嗎? 感謝

  • 如何新增隨機文章? | Alan的隨身筆記
    16

    [...] 按我下載Ecec-PHP外掛 (b) 中文套件: 按我下載Ecec-PHP中文套件 詳細做法可以參考: 香腸與魷魚的Exec-PHP教學 2.安裝好後,就可以讓我們的wordpress可以支援php語法了。接著把新增隨機文章的code放在側邊欄試試。語法可參考MUKI SPACE 的部落格,詳細語法都記載在他的網站內。請參考。 3.這樣就ok了,是不是很簡單呢?自己嘗試一下吧 Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages. [...]

  • 如何新增隨機文章? | Alan的隨身筆記
    17

    [...] 按我下載Ecec-PHP外掛 (b) 中文套件: 按我下載Ecec-PHP中文套件 詳細做法可以參考: 香腸與魷魚的Exec-PHP教學 2.安裝好後,就可以讓我們的wordpress可以支援php語法了。接著把新增隨機文章的code放在側邊欄試試。語法可參考MUKI SPACE 的部落格,詳細語法都記載在他的網站內。請參考。 3.這樣就ok了,是不是很簡單呢?自己嘗試一下吧 [...]

  • WordPress主题中不使用插件就能实现的五个常用功能 | CKSKY
    18

    [...] 补充,如果你在调用上面代码中出现“syntax error”的报错,可以看下这篇【修正文章】,thanks muki 同学。最热文章: [...]

  • asd26833
    19
    asd26833 (LV.4) // 2009.06.24 23:50

    請問MUKI歐 :cry: ,如果回應的文裡面有表情圖示,那麼在最新迴響裡面能不能設定不出現表情圖示?我的表情圖示有點大 :mrgreen:

  • muki
    20
    muki (LV.1015) // 2009.06.26 17:47

    @asd26833
    安,很抱歉,關於這部分我就不太懂了orz
    你可能要問一下原作者

  • biotangle
    21
    biotangle (LV.1) // 2009.08.24 15:12

    隨機文章有選出來了
    可是我的首頁也跟著只剩兩個隨機文章
    這跟我用的變形金剛版型 Atahualpa版型有沒有關係呢

  • muki
    22
    muki (LV.1015) // 2009.08.24 22:39

    @biotangle
    可能要讓我看一下你的blog,還有你隨機文章的語法唷

  • Roy Tang
    23
    Roy Tang (LV.2) // 2009.08.25 19:54

    muki 好厲害呀 :-D

  • Roy Tang
    24
    Roy Tang (LV.2) // 2009.08.25 19:55

    我在用呀 :lol: 不過 new reply 郤出了點問題.... :oops:

  • Eric
    25
    Eric (LV.2) // 2009.09.02 23:05

    你的最新迴響那邊的code, 很多的 \ 被吃掉了

  • Leona
    26
    Leona (LV.9) // 2009.09.11 14:46

    小木,請問妳一下喔,我有用妳上面那段隨機文章的代碼
    不過很奇怪的是 一用了之後...我blog首頁的文章
    也會跟著變成隨機文章列表出來的文
    原本最新的文章都消失了,怎會醬子啊?

  • muki
    27
    muki (LV.1015) // 2009.09.11 18:17

    @ Leona
    你是貼在哪個地方呢?
    是不是貼在sidebar.php ????

  • Leona
    28
    Leona (LV.9) // 2009.09.17 15:06

    嘿啊.....我貼在sidebar
    科科

  • muki
    29
    muki (LV.1015) // 2009.09.19 20:37

    那好奇怪唷...有空可以把你的sidebar.php寄給我看看:)

  • Joker
    30
    Joker (LV.5) // 2009.11.13 20:21

    又來麻煩木了 :mrgreen: 我的最新文章前面多一個代碼

    但是我看不出來木的 代碼如何把那段刪除?

  • muki
    31
    muki (LV.1015) // 2009.11.14 09:56

    @ Joker

    你多出來的那個是指黑點點嗎??
    那是html裡頭li的標記
    因為你的style.css沒有對這個標記特別下指令,所以才會看到

    如果想要把它隱藏可以參考這篇文章裡頭的「項目符號一覽」
    或是上網搜尋一下:)

  • Joker
    32
    Joker (LV.5) // 2009.11.14 14:30

    @muki
    愕~弄不掉哩~我直接把他貼到style.css裡面但沒效果

    還是我要去研讀一下你的css教學 :-D

  • muki
    33
    muki (LV.1015) // 2009.11.14 23:53

    @ Joker
    抱歉 沒有說的很清楚
    在css裡頭放上
    li {list-style-type:none;}

    然後你原本設定的list-style-type要移除

  • Joker
    34
    Joker (LV.5) // 2009.11.15 02:51

    @ muki
    謝謝~成功囉!! :wink: 一直以為要放在"Sidebar"

    結果不是 :mrgreen: 所以我就直接貼在CSS裡面而已 :idea:

  • Wing C.
    35
    Wing C. (LV.3) // 2009.11.21 02:44

    剛剛發現原來放了介面工具集的工具下去後就不能把這東西放到自己想要的位置了, 有小工具的話sidebar.php中的設定會被無視==

  • muki
    36
    muki (LV.1015) // 2009.11.21 17:11

    @ Joker
    呵呵 有成功就好
    我講的也不是很清楚 歹勢啦:P

    @ Wing C.
    預設的wordpress theme都是這種製作方法
    如果你懂php, 可以自己修改成兩者並存 :wink:

  • QQ
    37
    QQ (LV.4) // 2009.11.23 09:48

    muki大妳好
    請問妳一下
    我剛剛先試用了熱門文章
    可是發現在Mandigo佈景會怪怪的
    他會直接超過sidebar的長度
    還有我在此code的上方加上熱門文章的字樣跟
    可是沒辦法顯示
    應該是說
    沒辦法顯示出預設的圖
    會變成小黑點
    因為我看原本的siderbar裡打會出現小icon
    所以我才這樣試看看的
    麻煩muki大一下了 :mrgreen:
    謝謝 :)

  • muki
    38
    muki (LV.1015) // 2009.11.23 10:28

    @QQ
    安~你要不要放上你的blog網址給我測一下
    不然我無法憑空想像XD

  • QQ
    39
    QQ (LV.4) // 2009.11.23 12:03

    謝謝妳喔
    請問截圖給妳看可以嗎?
    我比較害羞啦...
    或是私下給你....XD
    但是我是丟在測試站說~

  • muki
    40
    muki (LV.1015) // 2009.11.23 13:22

    @QQ
    截圖的話我沒辦法實地去測試, 只能大概跟你說原因
    所以可以把測試站的位子給我 我去看一下^^
    私下給的話就寄mail給我唷~~

  • QQ
    41
    QQ (LV.4) // 2009.11.24 17:21

    我遇到神人了~~~~~~~~~ :-P
    謝謝muki大的幫忙

  • WordPress主题中不使用插件就能实现的五个常用功能(转载) | 伟景博客-膜技术|水处理|节能减排|循环经济|Wordpress|留学生活
  • 期货交易
    43
    期货交易 (LV.2) // 2010.02.04 14:54

    看得有点眼花……!! :wink:

  • 趴趴兔
    44
    趴趴兔 (LV.1) // 2010.03.16 22:26

    您好,我是用wordpress mu+buddypress
    我想請教,有沒有顯示熱門BLOG或最新註冊的寫法?
    謝謝

  • muki
    45
    muki (LV.1015) // 2010.03.17 11:40

    @趴趴兔

    我沒使用過MU,所以不清楚唷,很抱歉沒幫上你的忙

  • Wordpress實現五種文章代碼 « 奇吉吉小站
  • hornets
    47
    hornets (LV.2) // 2010.05.05 22:44

    我想請問一下muki,我裝了exec-php後,就能在邊欄加以上的語法。目前用到隨機文章後,發現網誌的文章怎麼也跟著邊欄的隨機文章同時變了?怪怪的~哪裡弄錯了嗎?

  • 佈景主題:Simple Chimera 2.0 | Lab Crocodile
    48

    [...] Life Studio:个性化 WordPress 友情链接页面 MUKI space*:語法 | WordPress不用插件直接實現五種文章代碼 Justin Tadlock:Goodbye, headaches. Hello, menus! Clap給個鼓勵、拍個手吧!Total: 0 / [...]

  • 手動撰寫WordPress隨機文章功能 « 簡睿隨筆
    49

    [...] | 點擊數: 5 / 5 為了增加隨機文章到側邊欄的功能而找了幾個外掛,但都不是佷理想,最後用語法 | WordPress不用插件直接實現五種文章代碼提供的手動方法來產生。原來的程式裡的冒號、endwhile等以前也有見過,但始終沒有弄清楚,也順便查了一下(PHP中冒号、 endif、endwhile、endfor这些都是什么),原來冒號就是 {、endwhile; 就是 },這樣就了解了。 [...]

  • addycat
    50
    addycat (LV.1) // 2010.08.06 18:48

    這一篇實在很實用,正打算在每一篇文章的後面
    加上二個組合,一個熱門文章,一個是随機文章
    實在是太方便了

  • 飞思博客 » WordPress主题中不使用插件就能实现的五个常用功能

  • LEAVE YOUR COMMENT:




    :wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:
     
    字體大小: 小字型 12px大字型 15px
    ▲ back to top