我什么都试过了。我看了每一个。仅有一个的问题在这里,在WP帮助论坛StackOverflow上,谷歌搜索了10页,在过去的2天里,我尝试了我能找到的每一种代码组合,但都找不到我想要的任何东西。这肯定不可能吗?目标似乎很简单!
THE GOAL: 首先显示所有粘性帖子,然后显示正常帖子-分页
示例:将每页的帖子设置为10,有15篇粘性帖子和15篇普通帖子,第1页将是10篇粘性帖子,第2页将是5篇粘性帖子,然后是5篇普通帖子,第3页将是10篇普通帖子。按日期排序。
我尝试了多个循环,各种查询,结果都很接近,但到目前为止还没有雪茄。以下是我目前掌握的情况:
<!-- THIS CODE QUERIES ALL POSTS AND RETURNS ONLY STICKY POSTS, DISPLAYED AT TOP OF THE PAGE -->
<?php
// show only ads within this specific category
$term = get_term_by(\'slug\', get_query_var(\'term\'), get_query_var(\'taxonomy\'));
//$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$sticky=get_option(\'sticky_posts\');
$args=array(
\'post_type\' => \'my_custom_post_type\',
\'ad_cat\' => $term->slug,
\'caller_get_posts\' => 1,
\'post__in\' => $sticky,
\'posts_per_page\' => -1
//\'paged\' => $paged
);
query_posts($args);
?>
<?php get_template_part( \'loop\', \'post_featured\' ); ?>
<?php wp_reset_query(); ?>
<!-- THIS CODE QUERIES ALL POSTS AND RETURNS ONLY REGULAR POSTS, DISPLAYED BELOW THE STICKIES -->
<?php
// show only ads within this specific category
$term = get_term_by(\'slug\', get_query_var(\'term\'), get_query_var(\'taxonomy\'));
$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
$sticky=get_option(\'sticky_posts\');
$args=array(
\'post_type\' => \'my_custom_post_type\',
\'ad_cat\' => $term->slug,
\'caller_get_posts\' => 1,
\'post__not_in\' => $sticky,
\'paged\' => $paged,
);
query_posts($args);
?>
<?php get_template_part( \'loop\', \'post_normal\' ); ?>
<?php wp_reset_query(); ?>
上面显示了所有粘性贴子,然后是(5)个正常贴子。这是我得到的最接近的结果,但是#1,我不想在第一页上显示所有粘性帖子,我想遵守分页规则#2、所有贴子都会显示在所有分页页面上。因此,如果我有50篇粘性帖子和50篇普通帖子,每页都会显示55篇帖子——前50篇是粘性帖子,后5篇是普通帖子,这不是我的目标(参见上面的目标)。
是否有一个或两个循环的简单修改?我应该使用双循环还是有其他/更好的选择?只要我能让它发挥作用,我愿意接受建议。我应该注意:我使用的是WP 3.2.1和一个精简的非插件分页函数,该函数取自WP PageNavi(完整分页函数可以在这里看到:http://paste2.org/p/1596821).
感谢您的帮助!
最合适的回答,由SO网友:drebabels 整理而成
@Chris\\u O是对的。。。当前自定义帖子类型中不支持粘性帖子,因此它必须与您使用的主题有关。
现在忽略CPT问题。。。假设它的工作方式与wordpress粘滞的工作方式相同,那么您描述的目标正是wordpress中“粘滞”帖子的工作方式(即在显示正常帖子之前显示所有粘滞帖子,并坚持分页),因此我可以告诉您,问题在于您试图创建两个单独的循环。为了按您希望的方式显示帖子,您应该只使用一个循环。
您是否尝试过只运行一个循环(即删除第二个查询,并将第一个查询替换为以下内容,以查看是否自动添加了粘滞)?
$paged = get_query_var( \'paged\' ) ? get_query_var( \'paged\' ) : 1;
$args=array(
\'post_type\' => \'my_custom_post_type\',
\'paged\' => $paged,
\'posts_per_page\' => 10
);
query_posts($args);
get_template_part( \'loop\', \'post_normal\' );