本文的重点是详细介绍如何完成归档页面的置顶,如WordPress分类和标签。根据二次开发完成归档页面的置顶是一个非常有用的方法,朋友们一定要参考。
本文通过案例描述了如何完成WordPress分类和标签等档案页面的置顶。分享给大家参考。深入分析以下内容:
在wordpress中,默认设置是只有主页可以置顶文章内容。如果我们期望归档页面,如类别/标签,我们也可以将文章内容放在顶部。我们必须重新开发它。
现在参考wp-includes/query.php中首页的顶部代码,稍作改动,使分类页、标签页、创建者页、日期页等归档网页也能像首页一样在顶部显示信息。只需将下面的代码放入当前主题样式下的functions.php中。
复制下面的代码:add_filter('
functionputStickyOnTop($posts){
if(is_home()||!is_main_query()||!is_archive())
return$posts;
global$WP_query;
$sticky_post=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){
/tell今天是否是分类页面
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->;作者==1&&$sticky_post1->;post_作者!=$WP_query->;query_vars['author']){
/删除不属于该作者的文章内容
$offset1=array_search($sticky_post1-->;ID,$sticky_posts);
unset($sticky_posts[$offset1]);
}
}
$num_posts=count($posts);
$sticky_offset=0;
//遍历帖子并将帖子重新定位到前面。
for($I=0;$i<$num_posts$I){
if(in_array($posts[$I]->;ID,$sticky_posts)){
$sticky_post=$posts[$I];
//从当前位置移除sticky
array_splice($posts,$i,1);
//移到前面,在其他stickies之后
array_splice($posts,$sticky_offset,0,array($sticky_post));
//增加粘性偏移量。下一个粘滞将被放置在该偏移处。
$sticky_offset;
//从帖子数组中删除帖子
$offset=array_search($sticky_post->;ID,$sticky_posts);
unset($sticky_posts[$offset]);
}
}
//如果有帖子被特别排除了,那就忽略那些有粘性的。
如果(!emptyempty($sticky_posts)&;&!emptyempty($WP_query->;query_vars['post__not_in'])
$sticky_posts=array_diff($sticky_posts,$WP_query->;query_vars['post__not_in']);
//如果(!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;
}
该代码表示:
1.如果您希望存档页面也显示所有热门文章,则删除11-43行代码;
2.如果您不想在类别页面上显示文章内容顶部的信息,请对第3行中的
复制代码进行如下编码:if(
//ABC是类别名称
if(is_category('ABC')|将第3行中的代码
复制如下:if(
//更改为:
/ABC是标签名称
if(is_tag('ABC')||[]如果不想对第3行的
复制代码进行如下编码:if(
//改为:
/ABC是创建者
if(is_author('ABC')||
5、上面的代码。如果您一直在使用归档页面上的WP_Query或query_posts来获取文章列表,并且喜欢将信息显示在文章内容的这个目录的顶部,那么您可以删除第三行代码中的以下代码(注意:文章内容中显示的总信息可能与您设置的不同):
以下代码:
复制以下代码:||!is_main_query()
Topstyle:如果你想给置顶文章内容添加风格,在functions.php中添加下面的代码,你就给置顶文章内容添加了一个名为sticky的类,实际的css代码由你自己决定:
复制下面的代码:add_filter('post_class','addstickyclass',10,3)
functionaddStickyClass($classes,$class,$post_id){
If(is_sticky()&;&is_category()&;&!isset($classes['sticky']){
$classes[]='sticky';
}
return$classes;
}
期待以上对大家的WordPress网站有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)