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&&!empty($sticky_posts)&&is_array($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;// Loop over posts and relocate stickies to the front.for($i=0;$i<$num_posts;$i++){if(in_array($posts[$i]->ID,$sticky_posts)){$sticky_post=$posts[$i];// Remove sticky from current positionarray_splice($posts,$i,1);// Move to front, after other stickiesarray_splice($posts,$sticky_offset,0,array($sticky_post));// Increment the sticky offset. The next sticky will be placed at this offset.$sticky_offset++;// Remove post from sticky posts array$offset=array_search($sticky_post->ID,$sticky_posts);unset($sticky_posts[$offset]);}}// If any posts have been excluded specifically, Ignore those that are sticky.if(!empty($sticky_posts)&&!empty($wp_query->query_vars['post__not_in']))$sticky_posts=array_diff($sticky_posts,$wp_query->query_vars['post__not_in']);// Fetch sticky posts that weren't in the query resultsif(!empty($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;}
评论已关闭
本文的评论功能已关闭,如有问题欢迎通过其他方式联系我们。