只做利于SEO的网站,提供网站建设、SEO、网站代运营等服务。服务中心 | 建站流程 | 网站地图

Wordpress调用当前分类的文章并实现列表分页

2021-11-18小猴建站 阅读()相关主题:

用Worderpress做企业站的时候经常会用到调用当前栏目的文章的功能,如果栏目很多,单独设立一个模板不便于管理,可以使用同一个模板也可以是现在这个功能。

Wordpress调用当前分类的文章

通常情况下,准确调用某个栏目分类需要指定该分类的ID,比如:

<?php
query_posts('cat=6&showposts=30&orderby=new'); //cat=6 指的就是分类ID为6的内容
while (have_posts()) : the_post(); 
?>

//省略代码段

<?php endwhile;?>

这里其实只需要让 cat=6 这个ID随着当前分类变化即可,修改代码如下

<?php
 global $wp_query;
 $cat_ID = get_query_var('cat');
 query_posts('cat='.$cat_ID.'&showposts=30&orderby=new');
 while (have_posts()) : the_post();
?>

//省略代码段

<?php endwhile;?>

可以根据排序要求,修改orderby后的参数,如:id、new等。但这个写法会有缺陷,就是不能正常分页,修改如下:

Wordpress分类列表分页

<?php
 global $wp_query;
 $cat_ID = get_query_var('cat');   
 $limit = get_option('posts_per_page');   
 $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;   
 //下面句中的limit=10这个参数就是我们每个分页所要显示的篇数   
 query_posts('cat=' . $cat_ID . '&showposts=' . $limit=10 . '&paged=' . $paged);   
 $wp_query->is_archive = true; $wp_query->is_home = false;   
 while (have_posts()) : the_post();    
?>

//省略代码段

<?php endwhile;?>

分页的HTML代码可以采用插件 WP Page Numbers,但好像WP不能直接搜到了,到我的网盘下载

链接:https://pan.baidu.com/s/1YmUGwkaGrJlNL6VevXRP9w 
提取码:y3bk

或者自己写都可以,在模板的 functions.php 增加如下代码,具体的HTML代码自行修改。

/*
 *列表分页
*/

function lingfeng_pagenavi( $range = 4 ) {
    global $paged,$wp_query;
    if ( !$max_page ) {
        $max_page = $wp_query->max_num_pages;
    }
    if( $max_page >1 ) {
        echo "<div class='fenye'>"; 
        if( !$paged ){
            $paged = 1;
        }
        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 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 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 href='".get_pagenum_link($i) ."'";if($i==$paged) echo " class='current'";echo ">$i</a>";
                    }
                }
            }else{
                for($i = 1;$i <= $max_page;$i++){
                    echo "<a 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>";
        }
        echo '<span>共['.$max_page.']页</span>';
        echo "</div>
";  
    }
}

当前栏目分类高亮功能

<div class="channel">
 <ul>
  <li <?php
   global $wp_query;
   $cat_ID = get_query_var('cat');
   if($cat_ID == "3"){
    echo ' class="current-cat"';
   }else echo '';?>><a href="<?php echo get_category_link(3);?>" rel="nofollow" >不限</a></li>
<?php wp_list_cats('child_of=' . get_category_root_id($cat) . '&depth=1&hide_empty=0&hierarchical=1');?>
   </ul>
</div>

这里的调用的是ID=3父级分类的下的二级子分类,要固定下来。样式参考:

<style type="text/css">
.current-cat{background:#c00;color:#fff}
</style>