目前,我正在为一个在WordPress上运行的网站工作,并使用了213主题,该主题已经内置了一个粘性贴子功能,并且工作得相当好。
但我不喜欢粘贴的帖子总是显示在绝对顶部。我希望能够显示最新的一篇或两篇或三篇帖子,然后是特色/粘性帖子。我该怎么做?
目前,我正在为一个在WordPress上运行的网站工作,并使用了213主题,该主题已经内置了一个粘性贴子功能,并且工作得相当好。
但我不喜欢粘贴的帖子总是显示在绝对顶部。我希望能够显示最新的一篇或两篇或三篇帖子,然后是特色/粘性帖子。我该怎么做?
您必须在中更改顺序$wp_query->posts
. 将其与get_option( \'sticky_posts\' )
.
示例:
function move_stickies_down( $num = 1 )
{
global $wp_query;
if ( empty ( $wp_query->posts ) )
return;
$stickies = get_option( \'sticky_posts\' );
if ( empty ( $stickies ) )
return;
$sticky_posts = $top = $after = array();
foreach ( $wp_query->posts as $p )
{
if ( in_array( $p->ID, $stickies ) )
{
$sticky_posts[] = $p;
}
elseif ( $num > 0 )
{
$top[] = $p;
$num -= 1;
}
else
{
$after[] = $p;
}
}
$wp_query->posts = array_merge( $top, $sticky_posts, $after );
}
将此函数添加到functions.php
在循环之前调用它,如下所示:move_stickies_down( 2 );
if ( have_posts() )
{
while ( have_posts() )
{
the_post();
// show post
}
}
例如,在简单循环中:$loop = new wp_query(array(\'posts_per_page\' => 3)); while($loop->have_posts()) : $loop->the_post(); if(get_post_meta($post->ID, \'skip_me\', true) == true){ // do something to ask for one more post, &#x