語法 | 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> <?php comments_number('', '(1)', '(%)'); ?><br />
<?php endwhile;endif; ?>
預覽圖如下:

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



[...] error”的报错,可以看下这篇【修正文章】,thanks muki [...]
這簡直就是在考php啊 (嘆)
這個好實用,不然多裝外掛又多耗資源了!XD!
趕快另存新檔存起來!等我新的站搞定再來試試^^!
--
拆組達人 與您分享辦公室的大小事
太棒了~可以減少資源,加速網站的進行。
不過我想問一下,WordPress模組中的最新文章,那個應該和上面的代碼是一樣的吧?
這個~~要放在sidebar.php裡面嗎?!
@Mion
呵,順便學習也不錯
@香腸
這我不清楚耶,我很少用到wp的模組,對他們也沒研究XD
@小晶
是的,把想要的語法copy回去貼在sidebar.php就可以了
蠻方便的
很實用的教學喔!趕緊收藏,找個時間再來改,3Q~
[...] error”的报错,可以看下这篇【修正文章】,thanks muki [...]
這不錯用喔~~我自己找的templates也是用這種寫法~
但是你一次整理,不錯喔~~~收藏收藏
太好了~ 小木好棒~
趕快學起來~ (筆記...
這個幫我了大忙~ 感謝您阿XD
[...] 原始連結 http://blog.mukispace.com/2009/04/16/wordpress-five-posts-code-without-plugins/ [...]
您好,可以請教一下如何在「熱門文章」前加上每篇的發表日期嗎? 感謝
[...] 按我下載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. [...]
[...] 按我下載Ecec-PHP外掛 (b) 中文套件: 按我下載Ecec-PHP中文套件 詳細做法可以參考: 香腸與魷魚的Exec-PHP教學 2.安裝好後,就可以讓我們的wordpress可以支援php語法了。接著把新增隨機文章的code放在側邊欄試試。語法可參考MUKI SPACE 的部落格,詳細語法都記載在他的網站內。請參考。 3.這樣就ok了,是不是很簡單呢?自己嘗試一下吧 [...]
[...] 补充,如果你在调用上面代码中出现“syntax error”的报错,可以看下这篇【修正文章】,thanks muki 同学。最热文章: [...]
請問MUKI歐
,如果回應的文裡面有表情圖示,那麼在最新迴響裡面能不能設定不出現表情圖示?我的表情圖示有點大
@asd26833
安,很抱歉,關於這部分我就不太懂了orz
你可能要問一下原作者
隨機文章有選出來了
可是我的首頁也跟著只剩兩個隨機文章
這跟我用的變形金剛版型 Atahualpa版型有沒有關係呢
@biotangle
可能要讓我看一下你的blog,還有你隨機文章的語法唷
muki 好厲害呀
我在用呀
不過 new reply 郤出了點問題....
你的最新迴響那邊的code, 很多的 \ 被吃掉了
小木,請問妳一下喔,我有用妳上面那段隨機文章的代碼
不過很奇怪的是 一用了之後...我blog首頁的文章
也會跟著變成隨機文章列表出來的文
原本最新的文章都消失了,怎會醬子啊?
@ Leona
你是貼在哪個地方呢?
是不是貼在sidebar.php ????
嘿啊.....我貼在sidebar
科科
那好奇怪唷...有空可以把你的sidebar.php寄給我看看:)
又來麻煩木了
我的最新文章前面多一個代碼
但是我看不出來木的 代碼如何把那段刪除?
@ Joker
安
你多出來的那個是指黑點點嗎??
那是html裡頭li的標記
因為你的style.css沒有對這個標記特別下指令,所以才會看到
如果想要把它隱藏可以參考這篇文章裡頭的「項目符號一覽」
或是上網搜尋一下:)
@muki
愕~弄不掉哩~我直接把他貼到style.css裡面但沒效果
還是我要去研讀一下你的css教學
@ Joker
抱歉 沒有說的很清楚
在css裡頭放上
li {list-style-type:none;}
然後你原本設定的list-style-type要移除
@ muki
一直以為要放在"Sidebar"
謝謝~成功囉!!
結果不是
所以我就直接貼在CSS裡面而已
剛剛發現原來放了介面工具集的工具下去後就不能把這東西放到自己想要的位置了, 有小工具的話sidebar.php中的設定會被無視==
@ Joker
呵呵 有成功就好
我講的也不是很清楚 歹勢啦:P
@ Wing C.
預設的wordpress theme都是這種製作方法
如果你懂php, 可以自己修改成兩者並存
muki大妳好
請問妳一下
我剛剛先試用了熱門文章
可是發現在Mandigo佈景會怪怪的
他會直接超過sidebar的長度
還有我在此code的上方加上熱門文章的字樣跟
可是沒辦法顯示
應該是說
沒辦法顯示出預設的圖
會變成小黑點
因為我看原本的siderbar裡打會出現小icon
所以我才這樣試看看的
麻煩muki大一下了
謝謝
@QQ
安~你要不要放上你的blog網址給我測一下
不然我無法憑空想像XD
謝謝妳喔
請問截圖給妳看可以嗎?
我比較害羞啦...
或是私下給你....XD
但是我是丟在測試站說~
@QQ
截圖的話我沒辦法實地去測試, 只能大概跟你說原因
所以可以把測試站的位子給我 我去看一下^^
私下給的話就寄mail給我唷~~
我遇到神人了~~~~~~~~~
謝謝muki大的幫忙
[...] error”的报错,可以看下这篇【修正文章】,thanks muki [...]
看得有点眼花……!!