WordPress给标签页分页教程
当你的网站文章数量较多,标签高达几千上万的时候,访问标签页是非常缓慢的,为了解决这个问题,给所有标签进行分页是…
当你的网站文章数量较多,标签高达几千上万的时候,访问标签页是非常缓慢的,为了解决这个问题,给所有标签进行分页是一个明智的做法。当然如果你比较懒,也可以像狗哥一样利用腾讯云CDN的缓存功能直接缓存标签页,这样即使上万的标签也会被CDN变成一个静态文件,服务器大量查询问题也就解决了,这种方式只适合标签不经常修改的站长,下面来看看DUX的标签分页怎么实现的,如果你的DUX没有标签分页功能,那么照抄本文即可实现,DMD主题也可照抄,注意细节。
首先添加一个后台配置项,打开options.php
文件,添加如下代码,至于添加到哪里就看你自己怎么方便了。
$options[] = array( 'name' => __('标签分页数量', 'haoui'), 'id' => 'tagspagenumber', 'type' => "text", 'class' => 'mini', 'std' => 40, 'desc' => __('标签页分页显示数量', 'haoui'));
找了下没找到DUX的这个后台配置在哪儿,不知道是不是作者忘记写了,所以上面的代码是我自己写的,你在DUX中是找不到的。
然后修改pages目录下的tags.php
文件,看名称就知道这是标签的模板文件。DUX将之修改为
<?php /** * Template name: Tags * Description: A tags page */ get_header(); $pagetags = _hui('tagspagenumber', 40); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $purl = get_page_link(); if( strstr($purl, '?') ){ $purl .= '?paged='; }else{ $purl .= '/page/'; } $tagsoffset = $pagetags*($paged-1); ?> <div class="container container-tags"> <h2><?php the_title(); ?></h2> <div class="tagslist"> <ul> <?php $tagslist = get_tags('orderby=count&order=DESC&number='.$pagetags.'&offset='.$tagsoffset); foreach($tagslist as $tag) { echo '<li><a class="name" href="'.get_tag_link($tag).'">'. $tag->name .'</a><small>×'. $tag->count .'</small>'; $posts = get_posts( "tag_id=". $tag->term_id ."&numberposts=1" ); foreach( $posts as $post ) { setup_postdata( $post ); echo '<p><a class="tit" href="'.get_permalink().'">'.get_the_title().'</a></p>'; } echo '</li>'; } ?> </ul> </div> <?php _tags_paging() ?> </div> <?php get_footer(); //以下内容你可以选择放在functions.php文件中 function _tags_paging() { global $pagetags; global $paged; $max_page = ceil(wp_count_terms('post_tag', array('hide_empty' => true))/$pagetags); $p = 3; if ( $max_page == 1 ) return; echo '<div class="pagination pagination-multi"><ul>'; if ( empty( $paged ) ) $paged = 1; if ( $paged > $p + 1 ) _tags_paging_link( 1 ); if ( $paged > $p + 2 ) echo "<li><span>···</span></li>"; for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<li class="active"><span>{$i}</span></li>" : _tags_paging_link( $i ); } if ( $paged < $max_page - $p - 1 ) echo "<li><span>···</span></li>"; if ( $paged < $max_page - $p ) _tags_paging_link( $max_page ); // echo '<li><span>共 '.$max_page.' 页</span></li>'; echo '</ul></div>'; } function _tags_paging_link( $i ) { global $purl; echo '<li><a title="第'.$i.'页" href="'. $purl.$i .'">'.$i.'</a></li>'; } ?> ?>
DMD将之修改为如下内容
<?php /** * Template name: Tags * Description: A tags page */ get_header(); $pagetags = _hui('tagspagenumber', 40); $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $purl = get_page_link(); if( strstr($purl, '?') ){ $purl .= '?paged='; }else{ $purl .= '/page/'; } $tagsoffset = $pagetags*($paged-1); ?> <style> .container-tags h2 { font-size: 22px; margin: 0; text-align: center; margin-bottom: 15px; } .tagslist { overflow: hidden; } .tagslist ul { list-style-type: none; padding: 0; margin: 0 -2% 0 0; } .tagslist li { float: left; width: 23%; margin-right: 2%; margin-bottom: 2%; padding: 15px; border: 1px solid #eee; background-color: #fff; border-radius: 2px; } .tagslist li .name { background-color: #eee; display: inline-block; padding: 5px 10px 4px; font-size: 12px; color: #666; } .tagslist li .name:hover { background-color: #444; color: #fff; } .tagslist li small { margin-left: 10px; color: #bbb; } small, .small { font-size: 85%; } .tagslist li p { margin: 10px 0 0; font-size: 12px; height: 17px; overflow: hidden; display: block; line-height: 1.5; } .tagslist li .tit { color: #999; } @media (max-width: 1024px){ .tagslist li { width: 31.3333333%; } } @media (max-width: 768px){ .tagslist li { width: 48%; } } </style> <div class="container container-tags"> <h2><?php the_title(); ?></h2> <div class="tagslist"> <ul> <?php $tagslist = get_tags('orderby=count&order=DESC&number='.$pagetags.'&offset='.$tagsoffset); foreach($tagslist as $tag) { echo '<li><a class="name" href="'.get_tag_link($tag).'">'. $tag->name .'</a><small>×'. $tag->count .'</small>'; $posts = get_posts( "tag_id=". $tag->term_id ."&numberposts=1" ); foreach( $posts as $post ) { setup_postdata( $post ); echo '<p><a class="tit" href="'.get_permalink().'">'.get_the_title().'</a></p>'; } echo '</li>'; } ?> </ul> </div> <?php _tags_paging(); ?> </div> <?php get_footer(); //以下内容你可以选择放在functions.php文件中 function _tags_paging() { global $pagetags; global $paged; $max_page = ceil(wp_count_terms('post_tag', array('hide_empty' => true))/$pagetags); $p = 3; if ( $max_page == 1 ) return; echo '<div class="pagination pagination-multi"><ul>'; if ( empty( $paged ) ) $paged = 1; if ( $paged > $p + 1 ) _tags_paging_link( 1 ); if ( $paged > $p + 2 ) echo "<li><span>···</span></li>"; for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<li class="active"><span>{$i}</span></li>" : _tags_paging_link( $i ); } if ( $paged < $max_page - $p - 1 ) echo "<li><span>···</span></li>"; if ( $paged < $max_page - $p ) _tags_paging_link( $max_page ); // echo '<li><span>共 '.$max_page.' 页</span></li>'; echo '</ul></div>'; } function _tags_paging_link( $i ) { global $purl; echo '<li><a style="background-color:#ddd" title="第'.$i.'页" href="'. $purl.$i .'">'.$i.'</a></li>'; } ?>
其实两者没多大差别,只是当时在写标签页的时候太懒了,直接将css放在了模板文件中,并且DMD主题的分页导航比DUX的分页导航背景色淡一些,为了避免使用DUX的背景色导致看不见分页按钮,所以我加了一句设置背景色的css,下个版本将统一背景颜色,如果你不想自己改,可以等我过年更新。
类别:WordPress教程、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!