WordPress 不用外掛直接實現五種文章代碼

最近每天在忙工作上的 code 問題,搞得我最愛的 WordPress 好久沒有碰了!
也好久沒有寫新文章了。
甚至有一點點的不知道要寫什麼東西好?不過感謝好友 muki wu 在FB 和 G+ 上面提到了一篇她的文章,雖然原始的文章已經有一點年紀了。不過資料的正確性是沒有問題的。
不過文中有些使用到了下 SQL 語法的方式,其實可以用 WP 本身提供的 function 就可以搞定了。
所以就無聊寫了這一篇文章啦~~


最新文章

<?php
$query_data = array(
	'posts_per_page' => 6 // 顯示的文章數量
);
$post_list = new WP_Query($query_data);
?>
<ul>
<?php
while( $post_list->have_posts() ) {
	$post_list->the_post();
	?>
	<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
<?php } ?>
</ul>
<?php wp_reset_query(); ?>

在木姊的文章中提到了使用 get_archives 的做法,不過這東西在 2.1 版本已經被列入不建議使用的函式當中,身為專業的開發人員,當然會請你使用另外一種方式來達到相同的目的

wp_get_archives(array('type' => 'postbypost', 'limit' => 6, 'format' => 'html'));

最新迴響

<?php
$args = array(
	'number' => 6,
	'status' => 'approve',
	'post_status' => 'publish'
);
$comments = get_comments($args);
?>
<ul>
<?php
foreach( $comments as $comment ) {
	?>
	<li><?php comment_author_link(); ?>: <?php echo(mb_strimwidth($comment->comment_content, 0, 65, '...')); ?></li>
<?php } ?>
</ul>

不過這做法有一個小小的問題,就是沒有辦法過濾掉原始文章有設密碼保護的那些迴響。
這是因為 WP 本身提供的迴響搜尋程式,並沒有這一項條件設定。當然彈性十足的 WP 還是有辦法做到這樣的限制,不過這樣加下去程式碼就不是簡潔有力的狀態了,所以就不加入沒有密碼的檢查啦~~

熱門文章

<?php
$query_data = array(
	'posts_per_page' => 6, // 顯示的文章數量
	'orderby' => 'comment_count'
);
$post_list = new WP_Query($query_data);
?>
<ul>
<?php
while( $post_list->have_posts() ) {
	$post_list->the_post();
	global $post;
	?>
	<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> (<?php echo($post->comment_count); ?>)</li>
<?php } ?>
</ul>
<?php wp_reset_query(); ?>

這裡的熱門是以迴響的數量為基準,做法很簡單。基本上跟最新文章的部分很像,就只是多加了一個排序的條件值進去即可。

相關文章

<?php
$tag__in = array();
$tabs = get_the_tags($post->ID);
if( is_array($tabs) ) {
	foreach( $tabs as $tag ) {
		$tag__in[] = $tag->term_id;
	}
}
$query_data = array(
	'posts_per_page' => 6, // 顯示的文章數量
	'tag__in' => $tag__in,
	'post__not_in' => array($post->ID)
);
$post_list = new WP_Query($query_data);
?>
<ul>
<?php
while( $post_list->have_posts() ) {
	$post_list->the_post();
	global $post;
	?>
	<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> (<?php echo($post->comment_count); ?>)</li>
<?php } ?>
</ul>
<?php wp_reset_query(); ?>

這是標籤功能為依據的相關文章,會根據目前的文章自動輸入適當的標籤,同時會規避掉自己這一篇文章。

隨機文章

<?php
$query_data = array(
	'posts_per_page' => 6, // 顯示的文章數量
	'orderby' => 'rand'
);
$post_list = new WP_Query($query_data);
?>
<ul>
<?php
while( $post_list->have_posts() ) {
	$post_list->the_post();
	global $post;
	?>
	<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a> (<?php echo($post->comment_count); ?>)</li>
<?php } ?>
</ul>
<?php wp_reset_query(); ?>

隨機文章的寫法跟 最新文章 或是 熱門文章很像,一樣差別只有在排序的設定上。
不過這裡有一點比較尷尬的問題是,當你的文章數量很多的時候,這樣的隨機文章效率一定不會好。應該在你文章數量達到萬的等級的時候應該就會很明顯的顯像出來了。這問題點不是因為 WP 的不好,而是那隨機排序的SQL語法,天生的效率有問題。

以上這些語法,只有 相關文章 的那一句語法,一定要放在單篇文章的頁面當中才會有效,因為他要自動抓取現在文章的資料。以目前的官方樣版來說,建議放在 content.php 檔案當中。
另外的四種做法,基本上可以隨便你擺放在哪裡都可以順利使做,顯示出你要的功能來。

最後,再一次感謝 muki space* 的文章,讓我半抄半改的寫出一篇文章來~~

分類: WordPress,標籤: , , , , , 。這篇內容的永久連結

在〈WordPress 不用外掛直接實現五種文章代碼〉中有 5 則留言

  1. muki表示:

    我好像沒開 pingback 的功能。
    明天再讓我連回來XD

  2. muki表示:

    那我只好不負所望
    抄襲!!!
    XDDDDDDDDD

  3. 自動引用通知: 常用函數 | Color your life

留言功能已關閉。