自定义循环、粘滞帖子和分页噩梦

时间:2011-08-19 作者:RodeoRamsey

我什么都试过了。我看了每一个。仅有一个的问题在这里,在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).

感谢您的帮助!

2 个回复
最合适的回答,由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\' );

SO网友:Anri

我会将您的模板循环与上面的代码结合起来。

然后在第一个循环和第二个循环中插入一些条件。

if($paged == 1) {
//Show Special Content for First

} else if($paged => 2) {
//Show Content for pages greater than 2

}
这可能不会一蹴而就,但通过使用更多的条件来获得所需的正确设置,这无疑是正确的方向。

因此,我是wordpress exchange上拥有此帐户的新用户,我无法发表评论并要求您将代码与“get\\u template\\u part(\'loop\')”或循环模板组合。我可能会给出一个更好的答案。

结束

相关推荐

Nested Pagination

wordpress可以这样做吗?比如,[A] 【B】【C】。。。[十] 【Y】[Z]。。。。。。标题以“z”开头的帖子。。。。。。。1 2 3 4下一步>>有人能告诉我如何实现这种分页的正确方向吗?这是一种以帖子标题为基础的A-Z分页。例如pageZ 有大于10的条目,也要分页。