WordPress分类与标签等存档页怎么实现置顶

   2025-07-23 admin00100

wordpress分类与标签等存档页怎么实现置顶?

本文实例讲述了WordPress分类与标签等存档页实现置顶的方法。分享给大家供大家参考。具体分析如下:

推荐:《wordpress教程》

在wordpress中默认能置顶文章就是只有首页了,如果我们希望分类/标签等存档页也能置顶文章我们需要二次开发.

现在参考wp-includes/query.php中首页置顶的代码,稍微修改一下,可以让分类页、标签页、作者页和日期页等存档页面也能像首页一样在顶部显示其范围内的置顶文章,把下面的代码放到当前主题下的functions.php中就可以了.

代码如下:

add_filter('the_posts','putStickyOnTop');functionputStickyOnTop($posts){if(is_home()||!is_main_query()||!is_archive())return$posts;global$wp_query;$sticky_posts=get_option('sticky_posts');if($wp_query->query_vars['paged']<=1&&is_array($sticky_posts)&&!emptyempty($sticky_posts)&&!get_query_var('ignore_sticky_posts')){$stickies1=get_posts(array('post__in'=>$sticky_posts));foreach($stickies1as$sticky_post1){//判断当前是否分类页if($wp_query->is_category==1&&!has_category($wp_query->query_vars['cat'],$sticky_post1->ID)){//去除不属于本分类的文章$offset1=array_search($sticky_post1->ID,$sticky_posts);unset($sticky_posts[$offset1]);}if($wp_query->is_tag==1&&has_tag($wp_query->query_vars['tag'],$sticky_post1->ID)){//去除不属于本标签的文章$offset1=array_search($sticky_post1->ID,$sticky_posts);unset($sticky_posts[$offset1]);}if($wp_query->is_year==1&&date_i18n('Y',strtotime($sticky_post1->post_date))!=$wp_query->query['m']){//去除不属于本年份的文章$offset1=array_search($sticky_post1->ID,$sticky_posts);unset($sticky_posts[$offset1]);}if($wp_query->is_month==1&&date_i18n('Ym',strtotime($sticky_post1->post_date))!=$wp_query->query['m']){//去除不属于本月份的文章$offset1=array_search($sticky_post1->ID,$sticky_posts);unset($sticky_posts[$offset1]);}if($wp_query->is_day==1&&date_i18n('Ymd',strtotime($sticky_post1->post_date))!=$wp_query->query['m']){//去除不属于本日期的文章$offset1=array_search($sticky_post1->ID,$sticky_posts);unset($sticky_posts[$offset1]);}if($wp_query->is_author==1&&$sticky_post1->post_author!=$wp_query->query_vars['author']){//去除不属于本作者的文章$offset1=array_search($sticky_post1->ID,$sticky_posts);unset($sticky_posts[$offset1]);}}$num_posts=count($posts);$sticky_offset=0;//Loopoverpostsandrelocatestickiestothefront.for($i=0;$i<$num_posts;$i++){if(in_array($posts[$i]->ID,$sticky_posts)){$sticky_post=$posts[$i];//Removestickyfromcurrentpositionarray_splice($posts,$i,1);//Movetofront,afterotherstickiesarray_splice($posts,$sticky_offset,0,array($sticky_post));//Incrementthestickyoffset.Thenextstickywillbeplacedatthisoffset.$sticky_offset++;//Removepostfromstickypostsarray$offset=array_search($sticky_post->ID,$sticky_posts);unset($sticky_posts[$offset]);}}//Ifanypostshavebeenexcludedspecifically,Ignorethosethataresticky.if(!emptyempty($sticky_posts)&&!emptyempty($wp_query->query_vars['post__not_in']))$sticky_posts=array_diff($sticky_posts,$wp_query->query_vars['post__not_in']);//Fetchstickypoststhatweren'tinthequeryresultsif(!emptyempty($sticky_posts)){$stickies=get_posts(array('post__in'=>$sticky_posts,'post_type'=>$wp_query->query_vars['post_type'],'post_status'=>'publish','nopaging'=>true));foreach($stickiesas$sticky_post){array_splice($posts,$sticky_offset,0,array($sticky_post));$sticky_offset++;}}}return$posts;}
 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  RSS订阅
Powered By DESTOON