Products
GG网络技术分享 2025-03-18 16:13 0
我们在制作wordpress主题时,调用置顶文章是必不可少的一项功能,下面说如何在模版中调用置顶文章。
置顶文章用到的两个重要函数
1、is_sticky() 判断文章是否置顶
2、get_option(‘sticky_posts’): 获取置顶文章ID,包含所有置顶文章ID的数组
上面就是在query_post中调用文章的方法,具体解释一下
‘post__in’ => get_option(‘sticky_posts’), //在置顶文章中调取文章
‘posts_per_page’ => 5, //获取五篇置顶文章
‘ignore_sticky_posts’ => 1 //默认值为0,不排除置顶文章
若是想排除置顶文章外的其余文章用 ‘post__not_in’ => get_option(‘sticky_posts’), 这样就可以在调用列表时排除置顶文章
和上面的方法有点类似
如果只显示置顶文章那么用is_sticky()判断即可。
出于网站的开发需求,在主页主循环外的方位独自调用了网站的置顶文章,因为不想在主页呈现两块相同置顶文章的列表,所以要扫除主循环中最新文章前面的置顶文章。
wp自学笔记以前共享过通过query_posts()完成扫除置顶文章的教程《在wordpress最新文章列表中扫除置顶文章》,可是使用query_posts()很简单引起文章列表的分页问题,因而并不是很主张使用,这儿推荐使用下面的代码。
把下面的代码添加到当前主题的functions.php文件,保存即可:
function exclude_sticky_posts($query){ if ( is_admin() || ! $query->is_main_query() ) return; if ( $query->is_home() && $query->is_main_query() ) { $query->set( \\\'ignore_sticky_posts\\\', 1 ); }} add_action(\\\'pre_get_posts\\\',\\\'exclude_sticky_posts\\\');
如果要排除其它页面的,就把代码中的is_home()改一下即可。
Demand feedback