使用代碼實現隨機文章、相關文章、文章分頁功能

先在functions裡寫好函數再到佈景裡調用,這樣在佈景裡看到的函數就不會感覺亂亂的,往後比較好修改,

隨機文章:

前台呼叫語法:

<?php s_random_lists(); ?>

以下內容加入functions.php

<?php

function s_random_lists($num_limit = 5 , $exclude = "" , $date_limit = "" , $echo = true , $list = true){

$out = "";

if ( $num_limit < 1 ) $num_limit = "-1";

if ( !$date_limit_ts = strtotime($date_limit) ) $date_limit = false;

if ( !$date_limit ){

$posts = get_posts('offset=0&numberposts='.$num_limit.'&exclude='.$exclude.'&orderby=rand');

} else {

$posts = get_posts('offset=0&numberposts=-1&exclude='.$exclude.'&orderby=rand');

}

$postscount = count($posts);

if ( $num_limit < 1 ) $num_limit = $postscount;

if ( $postscount < $num_limit ) $num_limit = $postscount ;

for ( $i = 0 ; $i < $num_limit ; $i++ ){

if ( !$date_limit or $date_limit_ts < strtotime( $posts[$i]->post_date )){

if ( $list ) $out.= '<li class="random-post-link">'."\n";

$out.= '<a href="'.get_permalink($posts[$i]->ID).'" title="'.$posts[$i]->post_title.'">'.$posts[$i]->post_title.'</a>'."\n";

if ( $list ) $out.= '</li>'."\n";

}else{

if ( $postscount > $num_limit ) $num_limit++;

}

}

if ( $list ) $out = '<ul class="random-post-link">'."\n".$out.'</ul>'."\n";

if ( $echo ){

echo $out;

} else {

return $out;

}

}

?>

顯示文章數量設定:$num_limit = 5 ,修改為要顯示的數量即可。

相關文章:

前台呼叫:

<?php s_related_posts(); ?>

以下內容加入functions.php

<?php

function srelated_posts($before_title="",$after_title="") {

global $wpdb, $post,$table_prefix;

if(!$post->ID){return;}

$now = current_time('mysql', 1);

$tags = wp_get_post_tags($post->ID);

$taglist = "'" . $tags[0]->term_id. "'";

$tagcount = count($tags);

if ($tagcount > 1) {

for ($i = 1; $i < $tagcount; $i++) {

$taglist = $taglist . ", '" . $tags[$i]->term_id . "'";

}

}

$limitclause = "LIMIT 5";

$q = "SELECT p.ID, p.post_title, p.post_content,p.post_excerpt, p.post_date,  p.comment_count, count(t_r.object_id) as cnt FROM $wpdb->term_taxonomy t_t, $wpdb->term_relationships t_r, $wpdb->posts p WHERE t_t.taxonomy ='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id  = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post->ID AND p.post_status = 'publish' AND p.post_date_gmt < '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limitclause;";

$related_posts = $wpdb->get_results($q);

foreach ($related_posts as $related_post ){

$output .=  '<li><a href="'.get_permalink($related_post->ID).'" title="'.wptexturize($related_post->post_title).'">'.wptexturize($related_post->post_title).'</a></li>';

}

$output = '<ul class="related_post">' . $output . '</ul>';

return $output;

}

function s_related_posts(){

$output = srelated_posts() ;

echo $output;

}

?>

顯示文章數量設定:

$limitclause = "LIMIT 5";,修改為要顯示的數量即可。

文章分頁:

前台呼叫:

<div id="spagenavi"><?php s_pagenavi(); ?></div>

CSS部份(style.css):

#paviinfo{border: 3px double #bfbfbf;padding:2px 5px;margin:0 2px;float:left;text-align:center;}

#spagenavi{float:right;font-size:13px;font-family:Arial;display:inline-block;}

#spagenavi a{color: #333;float:left;padding:2px 5px;border: 3px double #bfbfbf;margin:0 2px;text-decoration:none;}

#spagenavi a:hover{border-color: #BA0000;}

#spagenavi a.current{border-color: #0075b8;}

以下內容加入functions.php

<?php

function s_pagenavi($range = 6){

global $paged, $wp_query;

if ( !$max_page ) {

$max_page = $wp_query->max_num_pages;

}

if($max_page > 1){

if(!$paged){

$paged = 1;

}

echo '<div id="paviinfo">文章頁次'.$paged.'/'.$max_page.'</div>';

if($paged != 1){

echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='首頁'>首頁</a>";

}

previous_posts_link(' « ');

if($max_page > $range){

if($paged < $range){

for($i = 1; $i <= ($range + 1); $i++){

echo "<a title=".'"第'.$i.'頁"'. "href='" . get_pagenum_link($i) ."'";

if($i==$paged) echo " class='current'";

echo ">$i</a>";

}

}

elseif($paged >= ($max_page - ceil(($range/2)))){

for($i = $max_page - $range; $i <= $max_page; $i++){

echo "<a title=".'"第'.$i.'頁"'. "href='" . get_pagenum_link($i) ."'";

if($i==$paged) echo " class='current'";

echo ">$i</a>";

}

}

elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){

for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){

echo "<a title=".'"第'.$i.'頁"'. "href='" . get_pagenum_link($i) ."'";

if($i==$paged) echo " class='current'";

echo ">$i</a>";

}

}

}

else{

for($i = 1; $i <= $max_page; $i++){

echo "<a title=".'"第'.$i.'頁"'. "href='" . get_pagenum_link($i) ."'";

if($i==$paged) echo " class='current'";

echo ">$i</a>";

}

}

next_posts_link(' » ');

if($paged != $max_page){

echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='最後一頁'>最後一頁</a>";

}

}

}

?>