現在位置: 首頁 > 電腦科技 > wordpress > 代碼編寫 > 正文
使用代碼實現隨機文章、相關文章、文章分頁功能
2011年01月07日 代碼編寫 ⁄ 共 4903字 Comments Off on 使用代碼實現隨機文章、相關文章、文章分頁功能 ⁄ 被围观 1,725 views+

 

先在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>";

    }

  }

}

    ?>

抱歉!評論已關閉.